我正在尝试使用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。我在这里缺少什么?