第 3 章: 入力ストリーム

入力ストリーム

今度は入力ストリームを見ていく. これは標準入力 (通常はキーボード) からの入力を受け取る. 具体的には次のように記述する.

cin.cpp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#include <iostream>

int main(){
  int num;

  std::cin >> num;
  
  std::cout << num << "\n";
  std::cout << num << std::endl;
}

cin.cpp の実行結果は:

[wtopia cpp.lang]$ ./cin
99.2
99
99
[wtopia cpp.lang]$ ./cin
ab
0
0
[wtopia cpp.lang]$ ./cin
99
99
99

std::cout と同じく, std::cin もデータの型を問わない, 入力先を連結できる. 次のコードは全て有効.

cin2.cpp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <iostream>

int main(){
  int num1, num2;
  char str[80];
  
  std::cin >> str; // 文字列を入力
  std::cin >> num1 >> num2;

  std::cout << str << std::endl;
  std::cout << num1 << std::endl;
  std::cout << num2 << std::endl;
}

cin2.cpp の実行結果は:

[wtopia cpp.lang]$ ./cin2
wtopia 10 20
wtopia
10
20
[wtopia cpp.lang]$ ./cin2
wtopia
10
20
wtopia
10
20

C++ 言語では, std::cin を使うときにも, 制限をかけるべき, 次のプログラムは, 入力された文字数を 4 文字以内に制限している.

cin3.cpp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <iostream>
#include <iomanip> // for setw()

int main(){
  char str[20];

  std::cout << "4 文字以内の文字列を入力してください: \n";
  std::cin >> std::setw(4) >> str; // str[20] に設定しても関係ない

  std::cout << str << std::endl;

  return 0;
}

cin3.cpp の実行結果は:

[wtopia cpp.lang]$ ./cin3
4 文字以内の文字列を入力してください:
wtopia
wto

wtopia を入力したのに, wto だけ出力された. すなわち, std::setw(4) が有効となっている.

Table Of Contents

Previous topic

第 2 章: 出力ストリーム

Next topic

第 4 章: マニピュレータ (manipulator)