【发布时间】:2020-11-06 02:00:51
【问题描述】:
有什么方法可以调用getline(),如果没有输入,不阻塞等待?
我有以下代码:
while(true){
if(recv(sd, tBuffer, sizeof(tBuffer), MSG_PEEK | MSG_DONTWAIT) > 0) break;
getline(cin,send);
}
我想等待输入,但如果我在sd 套接字接收到一些数据,我想停止等待数据并退出while。我的代码现在只是停留在getline() 的第一次迭代上。我想评估getline(),如果没有可用的输入,请返回if。
这可能吗?
PS:我尝试使用cin.peek(),但这也阻止了输入。
【问题讨论】:
-
回答问题:是的,有可能。至少在 Linux 上。
-
我正在使用 Ubuntu.. 这怎么可能?你能给我一些链接或解释给我吗?
-
简短的回答是:1) 使用低级 I/O,而不是
getline。 2) 使用select。
标签: c++ nonblocking getline