Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.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++ 如何检查cin[C+;+;]中是否有任何内容_C++_Istream - Fatal编程技术网

C++ 如何检查cin[C+;+;]中是否有任何内容

C++ 如何检查cin[C+;+;]中是否有任何内容,c++,istream,C++,Istream,有没有办法检查cin中是否有内容?我尝试了peek(),但如果没有任何东西peek()等待输入,那不是我想要的。 谢谢C++流和StreamBuf是同步的,也就是说,它们会阻塞,直到有足够的输入来读取。没有可移植的异步检查流的方法。考虑从一个单独的线程调用PEEK()。不能使用CIN读取击键,然后如果没有可用的话,继续做其他的事情,我想这就是你想要的。cin是一个缓冲流,根本不以这种方式工作。事实上,没有办法使用标准C++来做这件事,你必须使用OS特有的特性。我认为标准允许 CIN < /C>实

有没有办法检查cin中是否有内容?我尝试了peek(),但如果没有任何东西peek()等待输入,那不是我想要的。
谢谢

C++流和StreamBuf是同步的,也就是说,它们会阻塞,直到有足够的输入来读取。没有可移植的异步检查流的方法。考虑从一个单独的线程调用PEEK()。

不能使用CIN读取击键,然后如果没有可用的话,继续做其他的事情,我想这就是你想要的。cin是一个缓冲流,根本不以这种方式工作。事实上,没有办法使用标准C++来做这件事,你必须使用OS特有的特性。

我认为标准允许<代码> CIN < /C>实现,如果没有输入,则进入EOF状态。然而,我所知道的编译器标准库(包括MS VS、Borland和GCC)并没有提供这种实现。(我不确定,因为我不知道流本身是否可以停止处于EOF状态,这是击键时
cin
必须做的事情。)EOF状态是读取失败的结果-除非执行读取操作,否则不会设置。是。例如,您调用
std::cin.peek()
,如果缓冲区中没有击键,它将返回
traits\u type::eof
,而不是等待击键。(我知道没有,但我认为可能。)这一定是可行的,因为如果您将标准输入流重新绑定到一个文件,例如(在执行程序时),
cin
将在文件结束时正确进入EOF状态。