入出力(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でキーボード入力を受け取る<<は出力用、>>は入力用- 入力の前には必ずプロンプト(案内)を出力する
- 複数の入力はスペースで区切って入力される