使用空格取消简单循环

Using a space for canceling a simple loop

本文关键字:简单 单循环 取消 空格      更新时间:2023-10-16

这是我这个简单作业的代码:

编写将读取用户字符输入的代码,直到输入空格(空格)。打印输入的字符数。请记住,用户可能会决定输入一个空白作为他的第一个字符。

为什么空间没有结束循环?

#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;
}

默认情况下,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 != ' ');