繁体   English   中英

cout的奇怪行为<< Boost :: posix_time

[英]strange behaviour of cout << Boost::posix_time

我想计算完成循环所需的时间。

我做的事情如下:

ptime before = second_clock::local_time(); //get current time
cout << "Started: "<< before << " ... processing ...";
while(foo) {
....
}
ptime after = second_clock::local_time(); // get Current time
cout << "Processing took" << after - before;

这将输出:开始:“一段时间”

然后我等待循环结束才能看到“......处理......”

这是为什么? 它应首先播放整个文本,然后进入循环。

如果我将第一个cout更改为:

cout <<“开始:”<<之前;

它甚至没有显示循环结束前的时间。

这是我见过的最奇怪的事情......似乎我对提升时间的理解出了问题。

我在我的代码中也使用了boost :: threads,但是循环中的工作程序被spwaned所以我不知道这可能与这个问题有什么关系。

有人可以帮帮我吗?

ostream包括cout使用缓冲区,这意味着实现可以等到你是否会在实际操作之前发送更多数据。

为了让cout更快打印,请使用

std::cout << std::flush;

或使用std::endl ,相当于"\\n"后跟std::flush

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM