Formatarea timpului cu boost chrono (Programare, C++, Boost, Unități De Stimulare)

Alexander a intrebat.

Mă întreb dacă există vreo modalitate de a obține doar ora fără a tipări unitățile :

#include <boost/chrono.hpp>
#include <iostream>

boost::chrono::milliseconds sumGlobal;

int main() {
    boost::chrono::high_resolution_clock::time_point t1 ;
    boost::chrono::high_resolution_clock::time_point t2 ;

    for (i=0;i<10;i++)
    { 
        t1 = boost::chrono::high_resolution_clock::now();
        f(); //to waste time   
        t2 = boost::chrono::high_resolution_clock::now();
        sumGlobal += (boost::chrono::duration_cast<boost::chrono::milliseconds>(t2-t1)); 
    }          

    std::cout << sumGlobal << "
";        
}

ieșirea este :

123 milliseconds 

Aș vrea să obțin doar

123

Există vreo soluție ?

Comentarii

  • Unitățile de timp TIL boost chrono au operatorii de streaming supraîncărcați. Mă întreb despre localizare și alte lucruri (cum ar fi simplificarea, pluralizarea) -.  > Por sehe.
1 răspunsuri
mastov

milliseconds este o instanțiere de șablon a duration șablon de clasă:

typedef duration<boost::int_least64_t, milli> milliseconds;

Operatorul de ieșire a fluxului << este supraîncărcat pentru clasa duration clasă:

template <class CharT, class Traits, class Rep, class Period>
    std::basic_ostream<CharT, Traits>&
    operator<<(std::basic_ostream<CharT, Traits>& os, const duration<Rep, Period>& d);

Având în vedere parametrii șablonului din cazul dumneavoastră, versiunea furnizată în mod implicit adaugă unitatea „milisecunde” ca text.

Dar clasa duration are metoda count care vă va returna durata în unitatea specificată (în cazul dvs. milisecunde) ca tip întreg specificat (metoda rep type parameter, în cazul dvs. boost::int_least64_t):

constexpr rep count() const;

Puteți scoate acest număr întreg în formatul dumneavoastră (în cazul dumneavoastră doar numărul pur):

std::cout << sumGlobal.count() << std::endl;

Comentarii

  • „și nu se poate face nimic în legătură cu asta” nu este adevărat; există o mulțime de posibilități de personalizare prin utilizarea parametrilor personalizați duration_units fațete personalizate –  > Por consultați.
  • @sehe: Editat la o declarație mai atentă. –  > Por mastov.