2014-02-26 134 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