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

时间:2014-10-15 06:44:54

标签: c++ buffer output

我正在寻找一个已经存在的问题的C ++解决方案:Writing to console without delays

基本上,我正在尝试将大块文本输出到控制台窗口而不会出现“输入”延迟。即使它很快,你仍然可以看到它逐行写入屏幕。由于整个屏幕可以立即改变颜色,我知道这不是屏幕刷新问题,而是输出的完成方式。

如果你需要更多细节,请阅读另一个帖子,那个人的OP比我能更好地解释了这个问题。

现在,我将所有内容存储在stringstream缓冲区中,但如何立即输出它就是我被卡住的地方。

感谢。

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

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

1 个答案:

答案 0 :(得分:2)

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

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

请记住,数据的大小必须是整个屏幕(即80x24),否则它看起来不会很漂亮。

您也可以考虑使用flush() - 它会立即触发输出到屏幕,而不是缓冲。

cout << flush();

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

导致此问题的另一个原因可能是VS

中使用的编译标志