【问题标题】:strange behaviour of cout << Boost::posix_timecout << Boost::posix_time 的奇怪行为
【发布时间】:2011-02-16 13:18:54
【问题描述】:

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

我会这样做:

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;

这将输出:Started: "some time"

然后我等待循环完成,然后才能看到“...处理中...”

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

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

cout

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

这是我见过的最奇怪的事情......我对加速时间的理解似乎有问题。

我在我的代码中也使用了 boost::threads,但是工人是在循环中产生的,所以我看不出这与这个问题有什么关系。

有人可以帮我吗?

【问题讨论】:

    标签: c++ boost posix


    【解决方案1】:

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

    要让cout 尽快打印,请使用

    std::cout << std::flush;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      相关资源
      最近更新 更多