为什么while循环不需要用户在c ++中输入

时间:2017-12-28 12:30:59

标签: c++

我正在学习c ++和阅读c ++ primer plus,但我不明白为什么这段代码需要两个“cin>> ch”。我知道第一个cin将读取用户输入的字符。但是我先删除“cin>> ch”并运行代码,程序没有错误。所以第一个cin是必要的吗?为什么第二个cin不需要用户输入?

#include <iostream>
int main()
{
    using namespace std;
    char ch;
    int count = 0;
    cout << "Enter characters; enter # to quit:\n";
    cin >> ch; //get a character
    while (ch != '#')
    {
        cout << ch;
        ++count;
        cin >> ch; // get the next character
    }
    cout << endl << count << " characters read\n";
    return 0;
}

3 个答案:

答案 0 :(得分:1)

您可以在while循环的内部条件下评估您的输入。

#include <iostream>

int main()
{
    char ch;
    int count = 0;
    std::cout << "Enter characters; enter # to quit:\n";

    while (std::cin >> ch && ch != '#')
    {
        std::cout << "entered: " << ch << std::endl;
        ++count;
    }

    std::cout << std::endl << count << " characters read" << std::endl;

    return 0;
}

当输入while条件时,它将等待您先输入任何内容。收到输入后,它将检查输入是否不是#。如果输入不是#,则输入循环,输入打印输出,计数器增加,然后返回等待另一个输入。如果输入#,则条件变为false,循环中止。

答案 1 :(得分:0)

如果删除第一个cin,则计数永远不会增加。用户可以在进入循环之前输入#字符,因此程序永远不能输入。

答案 2 :(得分:-1)

第一个cin&gt;&gt; ch显然用于从用户那里获取输入 再次使用相同的变量名称接受while循环中的数据&#34; ch&#34; , 因此,当您运行程序时,它不会给出错误,但只接受在while循环之前接受的第一个值,而不是while循环。   在while循环中,您可以为变量&#34; ch&#34;分配新值。但不能再接受新价值。