cout的奇怪行为<<升压::了posix_time

时间:2011-02-16 13:18:54

标签: c++ boost posix

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

我做的事情如下:

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&lt;&lt; “已开始:”&lt;&lt;前;

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

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

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

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

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

要让cout尽早打印,请使用

std::cout << std::flush;

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