2014-02-26 68 views
1

考慮的代碼這個例子:的std ::計時乘以持續時間

#include <chrono> 
#include <iostream> 

int main () 
{ 
    using namespace std::chrono; 

    system_clock::time_point s = system_clock::now(); 

    for (int i = 0; i < 1000000; ++i) 
     std::cout << duration_cast<duration<double>>(system_clock::now() - s).count() << "\n"; 
} 

我預計這將打印秒所經過的時間。但它實際上是在幾千秒內打印時間(預期結果乘以0.001)。難道我做錯了什麼?

編輯

由於seconds相當於duration<some-int-type>duration_cast<seconds>給出相同的結果。

我用gcc-4.7.3-R1

+0

如果你想要秒數,你需要duration_cast

+0

@DaveF:只有當你想舍入到整數秒時,因爲'seconds'是一個方便的typedef for'持續時間< some_integer_type>'。 'duration '也應該有一秒的時間。 –

+0

我在VS2013中試過它 - 正常工作 – GabiMe

回答

-2

你可以使用duration_cast<秒>而不是duration_cast <時間<雙>>

+0

'seconds'只是'duration '的一個typedef。 'duration '也應該有一秒的時間。 –

+0

我已經試過了。秒似乎完全像持續時間<整數,比率<1>>和duration_cast <毫秒>(...)的行爲實際上給我幾秒鐘。 – lisyarus

+0

當在兩者之間使用Ideone和C++ 11編譯器時(秒和持續時間),我得到不同的結果。秒僅打印秒(至少在該編譯器上)。但是我不能在任何其他編譯器atm上測試它 –

2

你的程序可以作爲同時使用GCC 4.8.2和VS2013預期。我想可能是在舊的gcc 4.7