簡體   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