使用 boost chrono 格式化时间
Formatting time with boost chrono
我想知道有没有办法只得到时间而不打印出单位:
#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 << "\n";
}
输出是:
123 milliseconds
我只想得到
123
有什么解决办法吗?
milliseconds
是 duration
class 模板的模板实例:
typedef duration<boost::int_least64_t, milli> milliseconds;
流输出运算符 <<
为 duration
class:
重载
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);
鉴于您案例的模板参数,提供的版本默认添加单位 "milliseconds" 作为文本。
但是 duration class 有方法 count
将 return 你指定单位的持续时间(在你的例子中是毫秒)作为指定的整数类型(rep
类型参数,在你的例子中 boost::int_least64_t
):
constexpr rep count() const;
您可以以自己的格式输出该整数(在您的情况下只是纯数字):
std::cout << sumGlobal.count() << std::endl;
我想知道有没有办法只得到时间而不打印出单位:
#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 << "\n";
}
输出是:
123 milliseconds
我只想得到
123
有什么解决办法吗?
milliseconds
是 duration
class 模板的模板实例:
typedef duration<boost::int_least64_t, milli> milliseconds;
流输出运算符 <<
为 duration
class:
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);
鉴于您案例的模板参数,提供的版本默认添加单位 "milliseconds" 作为文本。
但是 duration class 有方法 count
将 return 你指定单位的持续时间(在你的例子中是毫秒)作为指定的整数类型(rep
类型参数,在你的例子中 boost::int_least64_t
):
constexpr rep count() const;
您可以以自己的格式输出该整数(在您的情况下只是纯数字):
std::cout << sumGlobal.count() << std::endl;