next up previous contents
Next: 17.5 課題 17 Up: 17. 配列 I Previous: 17.3 変数の初期化と配列の初期化

17.4 一文字づつの読み込み処理

以前に学習したように、C++の入力処理においては、一文字づつの処理は cin >> を用い、後ろに文字型の変数をおけば、自動的に一文字づつ の処理がされるようになっている。

      char c;
      cin >> c;

例えば、与えられたファイルあるいは文字列を一文字づつ処理したいような 場合には、この演算(>>は実は演算である)の結果を用いて次のように 書くことが出来る。

     char c;
     while( cin >> c ){
         cout << "Input character is " << c << endl;
     }

これは、以前に少し触れたように、この入力文字を読み込むという演算が 失敗あるいは終了しない限り、真の結果を返しているので期待した動作を 行う。入力の失敗あるいは終了は、例えば入力が標準入力を 用いてパイプでファイルを読み込んでいるような場合には、ファイルの 終りが入力の終了になる。

    %  cat  test.data  |   a.out
(上の場合、Unix上で test.data ファイルをcat コマンドで標準出力に出力し、 それをパイプを用いて、a.out が標準入力から受け取っている。)

一方、標準入力がキーボードの場合には Ctrl+D (^D) を 押すことで入力の終りを示すようになっている。

以上は C++ での話であるが、C では関数として同じ様な一文字の入出力 のために別途関数が用意されているが、ここではそのような関数があることを 紹介するだけにとどめる。

    一文字入力      int getchar( void );
    一文字出力      int putchar( char );



Noriyo Kanayama