提问人:Biruk Abebe 提问时间:4/5/2016 最后编辑:Biruk Abebe 更新时间:4/5/2016 访问量:2925
使用 C++ 输入流 CIN 而不会阻塞
using c++ input stream cin without blocking
问:
我正在尝试使用 c++ 标准输入流 cin 在不阻止程序执行的情况下获取用户输入。我有这个代码:
char ch;
int flag=1;
do
{
if(cin.rdbuf()->in_avail())
{
cin.get(ch);
flag=0;
}
else
//do something else
}while(flag);
//do something with the input
这里的想法是在做其他事情时等待用户输入而不会阻塞,一旦用户提供输入,我们就会处理输入(都在一个线程中)。我从文档中知道输入流使用的 streambuf 类提供了 in_avail() 函数,当缓冲区中准备好输入时,该函数将返回非零值。上面的代码没有像我预期的那样工作,即使我在某个时候提供键盘输入,也会永远循环。我在 Windows 7 中使用 MS Visual Studio 2005。我在这里错过了什么?
答:
评论