1

いくつかのコードがあり、cin.eof() を使用して、プログラムが入力を読み取らないようにしたいと考えていました。私はやろうと思っていました:

char array[10]
while(!cin.eof())
{
  for(int i = 0; i < 10; i++)
  {
    cin >> array[i];
  }
}

そしてコードは続きます。ただし、「\n」をクリックすると、出力が出力されます。cntrl + d をクリックすると (UNIX 端末で)、プログラムは再び出力を実行し、終了に進みます。cntrl + d を 1 回だけ入力したときに、プログラムが改行で読み取りを停止し、出力を出力するようにするにはどうすればよいですか?

ありがとう。

4

1 に答える 1

1

まず、cin.eof()入力が失敗するまで何も役に立ちません。ループの先頭で使用することは決してありません。

第二に、あなたが何をしようとしているのか、私にはよくわかりません。何かのようなもの:

std::string line;
while ( std::getline( std::cin, line ) ) {
    //  ...
}

多分?lineこれにより、ファイルの終わりまで、変数にテキスト行が読み込まれます。ファイルの終わりに遭遇すると、入力は失敗し、ループから抜け出します。

于 2012-10-15T08:11:14.997 に答える