2016-10-01 5 views
0

Прежде всего, позвольте мне сказать, что я только начинаю использовать эту библиотеку вчера, поэтому мое понимание этого по-прежнему довольно элементарно. Я пытаюсь захватить FPS программы обработки видения, которую я создаю, и выводит ее на экран, используя библиотеку chrono , библиотеку. В моем случае мне нужно отложить прошедшее время после того, как я запустил stable_clock в double (или какой-либо другой численный typedef, который я мог бы рассматривать как двойной). Я просмотрел справочную документацию и пробовал работать с функциями duration_cast и time_point_cast, но ни один из них не является тем, что я ищу.Как вернуть прошедшее время из stable_clock как примитивный тип данных (double)

Мой вопрос: есть ли способ просто указать числовое значение текущего состояния часов в секундах до примитивного типа данных?

Любая помощь будет оценена по достоинству.

ответ

1

Вы можете сделать это, используя функцию duration::count.

Например, вы можете получить продолжительность в миллисекундах, а затем разделите the count на 1000.0, чтобы получить количество секунд как double.

3

Как это:

#include <chrono> 
#include <iostream> 
#include <thread> 

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

    // measure time now 
    auto start = std::chrono::system_clock::now(); 

    // wait some time 
    std::this_thread::sleep_for(1s); 

    // measure time again 
    auto end = std::chrono::system_clock::now(); 

    // define a double-precision representation of seconds 
    using fsecs = std::chrono::duration<double, std::chrono::seconds::period>; 

    // convert from clock's duration type 
    auto as_fseconds = std::chrono::duration_cast<fsecs>(end - start); 

    // display as decimal seconds 
    std::cout << "duration was " << as_fseconds.count() << "s\n"; 
} 

пример вывод:

duration was 1.00006s 
+0

Вы также можете по умолчанию второго параметра на 'duration' здесь, если Вам нравятся:' используя секунды = станд :: хроно :: Продолжительности ; '. –