C++无延迟地写入控制台

C++ Writing to console without delays

本文关键字:控制台 延迟 C++      更新时间:2023-10-16

我正在寻找一个C++解决方案来解决一个已经存在的问题:无延迟地写入控制台。

基本上,我试图将一大块文本输出到控制台窗口,而不会出现"键入"延迟。就像在中一样,即使它很快,你仍然可以看到它被一行一行地写在屏幕上。由于整个屏幕可以立即改变颜色,我知道这不是屏幕刷新的问题,而是输出的方式。

如果你需要更多的细节,请阅读另一个线程,该线程的OP比我更好地解释了这个问题。

现在,我将所有内容都存储在stringstream缓冲区中,但如何立即输出它是我的难点。

谢谢。

更新:问题似乎是VS2013不喜欢立即输出。当我使用code::Blocks编译代码时,我得到了所需的输出。

stringstream s;
// ...
cout << s.str() << flush;

如果我理解正确,现在您必须将字符串流内容输出到控制台,例如:

stringstream s;
... // fill s with data
cout << s.str()

请记住,数据的大小必须是整个屏幕(即80x24),否则看起来就不好看了。

您还可以考虑放置flush(),这将触发屏幕上的即时输出,而不是缓冲。

cout << flush();

编辑:正如你所提到的,它仍然很慢,我建议使用curses——然而这个解决方案不是很便携。

导致此问题的另一个原因可能是VS中使用的编译标志