1

この単純な割り当てのコードは次のとおりです。

空白 (スペース) が入力されるまで、ユーザーからの文字入力を読み取るコードを記述します。入力した文字数を出力します。ユーザーが最初の文字として空白を入力する場合があることに注意してください。

スペースがループを終了しないのはなぜですか?

#include <iostream>
using namespace std;

int main(){
char answer;
int count=1;


do{
    cout << "please enter number " << count;
    cin >> answer;
    count++;

}while(answer!=' ');
    cout << "you entered " << count-1 << "numbers." << endl;
    return 0;
}
4

1 に答える 1

5

デフォルトでは、cin >>操作はすべての種類の空白をスキップします。ループの前に使用cin >> noskipws;して、空白のスキップを無効にするか、cin.get()代わりに使用できます。

cin.get(answer);

改行と改行がスキップされなくなったため、それらを個別に処理する必要があることに注意してください。また、ストリームのステータスをチェックして、ファイルの終わりに対応する必要があります。

do {
    cout << "Please enter number " << count << endl;
    do {
        cin.get(answer);
    } while (cin && (answer == '\r' || answer == '\n'));
    count++;
} while (cin && answer != ' ');
于 2012-04-22T21:32:56.597 に答える