C++ 时差乘以持续时间

C++ 时差乘以持续时间,c++,c++11,chrono,C++,C++11,Chrono,考虑以下代码示例: #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<durat

考虑以下代码示例:

#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的时间。我做错什么了吗

编辑

因为秒等于持续时间,所以持续时间\u cast给出相同的结果


我使用了gcc-4.7.3-r1

您可以使用duration\u cast而不是duration\u cast

您的程序使用gcc 4.8.2和VS2013都可以按预期工作。我认为这可能是您的旧GCC4.7中的一个编译器错误:问题在于libstdc++的std::chrono-gcc-4.8版本内部存在问题,而gcc-4.7在内部时间单位上不一致。

如果您想要秒,则需要持续时间_cast@DaveF:仅当您要四舍五入到整数秒,因为秒是一种方便的持续时间定义。持续时间也应该是1秒。我在VS2013-works Fine中尝试过它。您如何确定它是以毫秒为单位打印的?如果我编译并运行该代码,并观察输出,它会像预期的那样每秒增加1,这与GCC的版本略有不同。可能会有帮助。秒只是持续时间的类型定义。持续时间也应该是1秒,我已经试过了。秒的作用似乎和持续时间完全一样,而持续时间的施法。。。事实上,这给了我几秒钟的时间。在C++11编译器中使用Ideone时,我得到的结果在两秒钟和持续时间之间是不同的。在该编译器上,秒只打印秒。但是,我不能在任何其他编译器上测试它