在C ++中停止睡眠期间的输入收集?

时间:2015-12-30 03:45:35

标签: c++ windows

提出了类似的Python问题。

How to ignore user input during sleep in Python 3?

我如何在C ++中这样做?我正在使用这个睡眠命令,并希望继续使用它。

this_thread::sleep_for(chrono::seconds(4));

但是,它仍然会收集用户输入,这会导致用户错过他们跳过的重要文本。我该如何防止这种情况?

我在Windows 10上使用VS 2015 Express。

如果你“-1”这个问题,请评论原因。

修改

使用以下方式输入键盘输入:

_getch();

这是一个控制台应用程序。

希望有所帮助!

修改

刷新的问题是getch();睡觉后不会出现。首先它睡觉,然后它显示文本,然后它要求输入。但是,它仍以某种方式收集getch();在文本显示之前!

除非我遗漏了什么......

看起来像这样

cout << "Wait 4 Seconds";
this_thread::sleep_for(chrono::seconds(4));
cout << "More text here!";
cout << "\n Press any key to go on";
_getch();

修改 你的意思是把睡眠放在一个线程中?我之前从未使用过线程,但我只是阅读它,我会试一试......

回答编辑后 最终守则如下:

cout << "Wait 4 Seconds";
this_thread::sleep_for(chrono::seconds(4));
while (_kbhit())
{_getch();}
cout << "More text here!";
cout << "\n Press any key to go on";
_getch();

1 个答案:

答案 0 :(得分:2)

睡觉后,你可以......

 // encode
new Buffer("Hello World").toString('base64');
//=> SGVsbG8gV29ybGQ=

// decode 
new Buffer("SGVsbG8gV29ybGQ=", 'base64').toString('ascii');
//=> Hello World

这会看到是否有输入等待,如果是,请调用while (kbhit()) getch(); 来丢弃一个字符。冲洗并重复。

上帝知道MS如何命名他们的功能,但如果你找不到getch() kbhit() <conio.h>,请{/ 3}}。