有没有办法检查cin中是否有内容?我尝试过peek()函数,但是如果没有任何内容,peek()函数会等待输入,这不是我想要的。谢谢。
如果你想使用cin读取按键,然后在没有按键时执行其他操作的话,是行不通的。因为cin是一个缓冲区流,无法满足这样的需求。实际上,在标准C++中没有办法做到这一点,你需要使用特定于操作系统的功能。
cin
std::cin.peek()
traits_type :: eof
C++ 流和流缓冲区是同步的,也就是说它们会阻塞,直到有足够的输入可供读取。没有一种可移植的方法可以异步地检查流。考虑从单独的线程中调用 peek()。
cin
,如果没有输入等待,则进入EOF状态。然而,我知道的编译器的标准库(包括MS VS、Borland和GCC)并没有提供这样的实现。(我不确定,因为我不知道流是否可以自行停止处于EOF状态,这就是cin
在按键时必须执行的操作。) - Adam Badurastd::cin.peek()
,如果缓冲区中没有按键,则返回traits_type :: eof
而不是等待按键。 (我知道它不会,但我认为它可能会。)这是可行的,因为如果您将标准输入流重新绑定到文件(在执行程序时),则cin
将在文件结尾正确进入EOF状态。 - Adam Badura