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

why while loop do not need user to input in c++

本文关键字:C++ 输入 用户 while 循环 不需要 为什么      更新时间:2023-10-16

我正在学习 c++ 并阅读 c++ 入门 plus,但我不明白为什么这段代码需要两个"cin>> ch"。我知道第一个 cin 会读取用户输入的字符,但随后我删除了第一个"cin>> ch"并运行代码,程序没有错误。所以拳头是必要的吗?为什么第二个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 readn";
    return 0;
}

您可以在循环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,循环中止。

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

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