入出力(cin/cout)

ユーザーからの入力を受け取り、結果を表示する

概要

プログラムは、ユーザーと 「入力」と「出力」 を通じて対話します。

  • 入力: ユーザーがキーボードで値を打つ
  • 出力: プログラムが画面に結果を表示

出力: cout(シーアウト)

std::cout は 「画面に出力する」機能です。 これまでのプログラムで使ってきたものです。

基本的な使い方

#include <iostream>

int main() {
    std::cout << "Hello" << std::endl;
    std::cout << 42 << std::endl;
    
    int x = 100;
    std::cout << "x の値: " << x << std::endl;
    
    return 0;
}

実行結果:
Hello
42
x の値: 100

複数の値を出力

<< を連続して使うことで、 複数の値を一度に出力できます。

int a = 10, b = 20;
std::cout << "a = " << a << ", b = " << b << std::endl;

a = 10, b = 20

std::endl と改行

std::endl は改行です。 出力したら改行してくれます。

std::cout << "Line 1" << std::endl;
std::cout << "Line 2" << std::endl;

Line 1
Line 2

入力: cin(シーイン)

std::cin は 「ユーザーのキーボード入力を受け取る」機能です。

基本的な使い方

#include <iostream>

int main() {
    int age;
    
    std::cout << "年齢を入力: ";
    std::cin >> age;
    
    std::cout << "あなたの年齢は " << age << " 歳です" << std::endl;
    
    return 0;
}

実行時の動作:
年齢を入力: 25(ユーザーが入力)
あなたの年齢は 25 歳です

>> は 「入力を右の変数に格納」という意味です。

複数の入力を受け取る

#include <iostream>

int main() {
    int a, b;
    
    std::cout << "2つの数値を入力: ";
    std::cin >> a >> b;
    
    int sum = a + b;
    std::cout << a << " + " << b << " = " << sum << std::endl;
    
    return 0;
}

実行時の動作:
2つの数値を入力: 10 20(ユーザーが入力、スペース区切り)
10 + 20 = 30

実用的な例

例1: 物の値段と個数から合計を計算

#include <iostream>

int main() {
    double price, quantity;
    
    std::cout << "商品の単価を入力: ";
    std::cin >> price;
    
    std::cout << "個数を入力: ";
    std::cin >> quantity;
    
    double total = price * quantity;
    
    std::cout << "合計金額: " << total << " 円" << std::endl;
    
    return 0;
}

実行時の動作:
商品の単価を入力: 100
個数を入力: 3
合計金額: 300 円

例2: ユーザー情報の入出力

#include <iostream>

int main() {
    int age;
    double height;
    
    std::cout << "あなたの年齢は? ";
    std::cin >> age;
    
    std::cout << "あなたの身長は? ";
    std::cin >> height;
    
    std::cout << "入力された情報:" << std::endl;
    std::cout << "年齢: " << age << std::endl;
    std::cout << "身長: " << height << " cm" << std::endl;
    
    return 0;
}

cout と cin の演算子

<<>> は 単なる演算子です。しっかり理解しましょう。

演算子 用途
<< 出力ストリームに値を流す std::cout << x
>> 入力ストリームから値を取る std::cin >> x

<< は「矢印が左を向いている」ので、 右側の値が左側に流れ込む。 >> は「矢印が右を向いている」ので、 左側から右側に流れ込む、と覚えると良いでしょう。

入出力のテクニック

出力を1行で

// 方法1: 複数の << を繋ぐ
std::cout << "x = " << x << ", y = " << y << std::endl;

// 方法2(別々の行)
std::cout << "x = " << x << std::endl;
std::cout << "y = " << y << std::endl;

改行の代わりに \n

// std::endl の代わりに "\n" でも OK
std::cout << "Hello" << "\n";

// ただし、std::endl のほうが推奨(バッファをフラッシュするため)

ポイント

  • std::cout は画面出力、std::cin は入力受け取り
  • <<>> は「矢印の方向」をイメージ
  • 入出力時にはプロンプト(案内文)を必ず出力する
  • std::endl は改行と同時にバッファをフラッシュ

よくある誤り

誤り1: cin/cout が逆になっている

std::cout >> x;  // ❌ 逆向き
std::cin << x;   // ❌ 逆向き

std::cout << x;  // ✅ 正しい
std::cin >> x;   // ✅ 正しい

誤り2: プロンプトなしで入力を待つ

int x;
std::cin >> x;  // ❌ ユーザーが何を入力すればいいか不明

// ✅ 正しい
std::cout << "数値を入力: ";
std::cin >> x;

誤り3: 型の不一致

int x;
std::cin >> x;
// ユーザーが "hello" と入力
// → x に数値が入らず、エラーになる

やってみよう

練習1: ユーザーから名前の年齢を入力させ、「あなたの年齢は XX 歳です」と出力するプログラムを書いてください。

練習2: 2つの整数を入力させ、その合計と差を出力してください。

チャレンジ: 以下の実行結果になるプログラムを書いてください。

正方形の一辺の長さを入力: 5
面積: 25

ヒント

辺の長さを入力させて、 それを2乗(かける)して面積を計算します。

解答例
#include <iostream>

int main() {
    int side;
    
    std::cout << "正方形の一辺の長さを入力: ";
    std::cin >> side;
    
    int area = side * side;
    
    std::cout << "面積: " << area << std::endl;
    
    return 0;
}

まとめ

  • std::cout で画面に出力、std::cin でキーボード入力を受け取る
  • << は出力用、>> は入力用
  • 入力の前には必ずプロンプト(案内)を出力する
  • 複数の入力はスペースで区切って入力される