1

アドレスでいくつかの C++ テキストを読んでいました: http://www.parashift.com/c++-faq-lite/new/istream-and-while.html

テキストによると、私はこのコードを書きました:

int sum = 0, value;
while(cin >> value) 
{
    cout << "value: " << value << endl;
    sum += value;
}
cout << "sum: " << sum << endl;

入力が次の場合:1 2 3 4 5

その後、思ったように while ループが止まりませんでした。私は何か誤解していますか?(私は MS Visual C++ 2005 を使用していました)

4

4 に答える 4

6

while ループは、入力ストリームが閉じられるまで入力を読み取ります。Windows コンソールでは、ユーザーが Ctrl+Z を押すまで。

ユーザーがエンターを押すまで入力を読み上げたい場合は、別のことを行う必要があります。たとえば、getline を使用して行全体を読み取り、その行を stringstream に入れて、while ループで読み取ることができます。または、各値を読み取った後peek()にクラスのメソッドを使用して、次の文字がistreamストリームは改行です。

于 2012-04-29T11:40:00.503 に答える
0

Windows コンソールでは、ユーザーが Ctrl+Z を押すまで

一番上の答えに関して、これは必ずしも真実ではないことに注意してください。

入力演算子は、ループ中にuntrueまたはfalseになるまで無期限にアクティブのままになります。その性質上、整数のユーザー入力を取得しようとしています。あなたの例では、整数以外を入力して false と評価する必要があります。

于 2015-05-05T03:26:01.480 に答える
0

ループを終了するための特別な値を設定できます。

例えば:

int sum = 0, value = 0;
while(value != -199) 
{
    cin >> value
    if(value != -199)   {
    cout << "value: " << value << endl;
    sum += value;
    }
}
cout << "sum: " << sum << endl;

このループは、-199 を押した場合にのみ終了します (必ずしも -199 であるとは限りません。ほとんどのプログラムにとって簡単なので、これを選択しました)。入力として使用しない場合は、0 または -1 にすることができます。

于 2012-04-29T11:56:25.017 に答える
-1

while ループは必要ありません。cin >> value1回だけ。

于 2012-04-29T11:46:13.073 に答える