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 回答