2

C ++では、過剰な入力が与えられた場合、どうなりますか?それはどこかに保存されますか、それとも完全に無視されますか?

たとえば、次のサンプルコードは次のとおりです。

#include <iostream>
using namespace std;
int main()
{
   char a, b, c;

   cout << "Enter three letters: ";

   cin.get(a).get(b).get(c);

   cout << "a: " << a << "\nb: " << b << "\nc: " << c << endl;
 return 0;
}

3文字だけでいいので、好きなだけ入力できます。残りはどこに行きますか?できればどこにも...そうですか?

4

2 に答える 2

3

それらは入力バッファに入ります。プロセスが(それらを読み取らずに)終了すると、バッファは破棄されます(および未読の内容も一緒に)。

于 2012-05-30T06:51:11.837 に答える
2

場合によります。動作中のいくつかのバッファがあります。 通常(何も保証されていませんが、Unix と Windows の場合は確実です)、プログラムがデータを確認する前に Enter キーを押す必要があります。Enter を含めて入力したものはすべてプロセス内のバッファに入り、プロセスが終了すると破棄されます。

プロセスがシェルのコマンドラインから開始され、標準入力がキーボードに接続されていると仮定すると、これがデフォルトの動作です。別のプロセスがプロセスを開始した場合、別の動作をするように入力が再構成されている可能性があります。入力された各文字を送信するように (少なくとも Unix では) キーボードを構成することは十分に可能です。

最後に、標準入力がファイルからのものである場合、もちろん、ファイル内のデータは、ご想像のとおりそのままの場所にとどまります。パイプからのものである場合、少なくとも Unix では、データは破棄され、パイプにまだ書き込みを行っているプロセスはシグナルを受信します。

于 2012-05-30T07:39:52.553 に答える