我正在寻找一个已经存在的问题的C ++解决方案:Writing to console without delays。
基本上,我正在尝试将大块文本输出到控制台窗口而不会出现“输入”延迟。即使它很快,你仍然可以看到它逐行写入屏幕。由于整个屏幕可以立即改变颜色,我知道这不是屏幕刷新问题,而是输出的完成方式。
如果你需要更多细节,请阅读另一个帖子,那个人的OP比我能更好地解释了这个问题。
现在,我将所有内容存储在stringstream
缓冲区中,但如何立即输出它就是我被卡住的地方。
感谢。
更新:问题似乎是VS2013不喜欢立即输出。当我用Code :: Blocks编译我的代码时,我得到了所需的输出。
stringstream s;
// ...
cout << s.str() << flush;
答案 0 :(得分:2)
如果我理解正确,现在你必须输出字符串流内容到控制台,例如:
stringstream s;
... // fill s with data
cout << s.str()
请记住,数据的大小必须是整个屏幕(即80x24),否则它看起来不会很漂亮。
您也可以考虑使用flush() - 它会立即触发输出到屏幕,而不是缓冲。
cout << flush();
编辑: 正如你所提到的那样,它仍然很慢,我建议使用curses - 但是这个解决方案不是很便携。
导致此问题的另一个原因可能是VS
中使用的编译标志