我想计算完成所需的循环时间。我做这样的事情:ptime before = second_clock::local_time(); //get current timecout << "Started: "<< before << " ... processing ...";while(foo) {....}ptime after = second_clock::local_time(); // get Current timecout << "Processing took" << after - before;这将输出:开始:“一些时间”然后我等待循环完成,然后才能看到“......处理......”这是为什么?它应该首先 cout 整个文本,然后进入循环。如果我将第一个 cout 更改为:cout 它甚至没有向我显示循环结束前的时间。这是我见过的最奇怪的事情......似乎我对 boost 时间的理解出了问题。我在我的代码中也使用了 boost::threads,但是工作人员在循环中被分散了,所以我不知道这与这个问题有什么关系。有人可以帮我吗? 最佳答案 ostream s 包括 cout 使用缓冲区,这意味着实现可以等待查看您是否会在实际操作之前发送更多数据。要更快地打印 cout,请使用std::cout << std::flush;或使用 std::endl ,它等价于 "\n" 后跟 std::flush 。关于c++ - cout << Boost::posix_time 的奇怪行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5016905/ 10-14 16:37