while(cin)是什么意思

c++ primer plus中里面有个代码不懂

cin.get(tem,SIZE);
while(cin);

不太懂while(cin);这个语句

循环读取未知数量的数据吧,直到遇到结束符或无效的输入退出, 应该还要加上个变量吧,比如:

int value;
while(cin >> value)  // 通过检测其流的状态来判断结束(遇到结束符或无效的输入退出)
{

}

该回答引用NewBing

在C++中,while(cin)是一个循环,它将读取输入流(cin)并在读取到EOF时停止。EOF是一个特殊的字符,表示输入流的结束。在这个例子中,while(cin)循环将一直运行,直到读取到EOF。(1)(2)


在你提供的代码中,cin.get(tem,SIZE);将从输入流(cin)中读取SIZE-1个字符并将它们存储在tem数组中。然后,while(cin);将一直运行,直到读取到EOF。因为while(cin);没有任何条件来终止循环,所以它将一直运行下去。(1)(2)


源: 与必应的对话, 2023/4/19

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    这个语句会一直等待用户的输入直到用户输入ctrl+C或者ctrl+Z结束输入。它的作用是保持程序的运行状态,以便用户随时输入数据并与程序进行交互。在某些程序中可能需要等待用户的输入,这时就可以使用while(cin)来实现这个功能。

    以下是示例代码:

    #include <iostream>
    int main()
    {
        std::cout << "请输入数字:\n";
    
        int num;
        while(std::cin >> num) // 等待用户输入
        {
            std::cout << "您输入的数字是:" << num << "\n";
        }
    
        return 0;
    }
    

    在这个例子中,用户可以输入一个数字,并且程序会一直等待用户输入,直到用户输入错误或使用ctrl+C或者ctrl+Z退出程序。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^