相关疑难解决方法(0)

非阻塞std :: getline,如果没有输入则退出

目前我有一个从标准输入读取的程序,如果没有输入,程序偶尔需要继续运行,通常这是一个测试脚本没有'输入'可以这么说.

program -v1 -v2 -v3 <input >output

v1 - v3分别是命令行参数

基本上,如果没有给出"输入",程序会将命令行参数及其各自的含义吐出,然后退出.

但是目前如果给它一个空的测试文件,或者只是在运行std :: getline上的块之后按下输入,我用来输入命令.

while(std::getline(std::cin,foo)
{do stuff}
Run Code Online (Sandbox Code Playgroud)

其中foo是一个字符串.

如何do stuff在没有输入的情况下将其运行至少一次然后退出?如果输入do stuff,则标准输入中的每一行都会发生一次.

是否可以切换到do-while循环,并检查预循环是否有任何输入?

就像是

if cin empty
set flag

do
 {do stuff
 check flag}
while(getline)
Run Code Online (Sandbox Code Playgroud)

或者是非阻塞的,在c ++中是不可能的?

这个问题似乎反复重复,但我找不到一个明确的答案,甚至是一个平台无关的答案(这个程序本质上是学术性的,在windows上编码并在unix上测试).

c++ istream

12
推荐指数
2
解决办法
5577
查看次数

标签 统计

c++ ×1

istream ×1