Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用空格取消简单循环_C++ - Fatal编程技术网

C++ 使用空格取消简单循环

C++ 使用空格取消简单循环,c++,C++,以下是我的简单作业代码: 编写从用户处读取字符输入的代码,直到输入一个空格。打印输入的字符数。请记住,用户可能会决定输入一个空格作为其第一个字符 为什么空间没有结束循环 #include <iostream> using namespace std; int main(){ char answer; int count=1; do{ cout << "please enter number " << count; cin >>

以下是我的简单作业代码:

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

为什么空间没有结束循环

#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>>操作跳过所有类型的空白。您可以在循环之前使用来禁用空白跳过,或者改用:

您应该知道,现在不再跳过换行符和回车符,因此必须单独处理它们。此外,您还应检查流状态以对文件结尾作出反应:

do {
    cout << "Please enter number " << count << endl;
    do {
        cin.get(answer);
    } while (cin && (answer == '\r' || answer == '\n'));
    count++;
} while (cin && answer != ' ');
默认情况下,cin>>操作跳过所有类型的空白。您可以在循环之前使用来禁用空白跳过,或者改用:

您应该知道,现在不再跳过换行符和回车符,因此必须单独处理它们。此外,您还应检查流状态以对文件结尾作出反应:

do {
    cout << "Please enter number " << count << endl;
    do {
        cin.get(answer);
    } while (cin && (answer == '\r' || answer == '\n'));
    count++;
} while (cin && answer != ' ');

您可以只在0开始计数,而不是打印计数-1,因为CIN >跳过空白。您可以在0开始计数,而不是打印计数。因为CIN >跳过空白。@ DICEY:如果它是有用的,请考虑通过点击左边的嘀嗒按钮来接受这个答案:好的,但实际上。包括使用名称空间标准;int main{char answer;int count=1;cin>>noskipws;do{ Coud@ Digy:我只能猜测,但也许你的问题是它现在不再跳过换行符。你应该单独检查。@ DICE:请检查我的编辑。你可以用CIN >回答和NokiPWS做同样的事情。@ DICEY:如果它有帮助,请考虑点击LK上的嘀嗒按钮来接受这个答案。ft端:好的,但实际上。包括使用名称空间std;int main{char answer;int count=1;cin>>noskipws;do{cout@Dicey:我只能猜测,但也许你的问题是它现在不再跳过换行符。你应该单独检查。@Dicey:请检查我的编辑。你可以对cin>>答案和noskipws执行同样的操作。