### 使用c++11中便利的工具 #### 6.1 处理日期和时间的chrono库 #### 6.1.1 记录时长的duration ``` std::chrono::duration > seconds;//表示秒 ``` chrono的count(),可以获取时钟周期数
需要注意的是:当两个duration时钟周期不同的时候,会先统一周期,再进行计算。
还可以通过duration_cast<>()进行时钟周期的转换 #### 6.1.2 表示时间点的time point #### 6.1.3 获得系统时钟的clocks #### 6.1.4 计时器timer ``` #include class Timer { public: Timer() : m_begin(std::chrono::high_resolution_clock::now()) {} void reset() { m_begin = std::chrono::high_resolution_clock::now(); } //默认输出毫秒 int64_t elapsed() const { return std::chrono::duration_cast( std::chrono::high_resolution_clock::now() - m_begin).count(); } //微秒 int64_t elapsed_micro() const { return std::chrono::duration_cast( std::chrono::high_resolution_clock::now() - m_begin).count(); } //纳秒 int64_t elapsed_nano() const { return std::chrono::duration_cast( std::chrono::high_resolution_clock::now() - m_begin).count(); } //秒 int64_t elapsed_seconds() const { return std::chrono::duration_cast( std::chrono::high_resolution_clock::now() - m_begin).count(); } //分 int64_t elapsed_minutes() const { return std::chrono::duration_cast( std::chrono::high_resolution_clock::now() - m_begin).count(); } //时 int64_t elapsed_hours() const { return std::chrono::duration_cast( std::chrono::high_resolution_clock::now() - m_begin).count(); } private: std::chrono::time_point m_begin; }; void fun() { std::cout << "hello world" << std::endl; } void Test() { std::cout << "\nTest()\n"; Timer t; //开始计时 fun(); std::cout << t.elapsed_seconds() << std::endl; //打印fun函数耗时多少秒 std::cout << t.elapsed_nano() << std::endl; //打印纳秒 std::cout << t.elapsed_micro() << std::endl; //打印微秒 std::cout << t.elapsed() << std::endl; //打印毫秒 std::cout << t.elapsed_seconds() << std::endl; //打印秒 std::cout << t.elapsed_minutes() << std::endl; //打印分钟 std::cout << t.elapsed_hours() << std::endl; //打印小时 } int main(void) { Test(); system("pause"); return 0; } ``` #### 6.2 数值类型和字符类型的互相转换 std::string to_string(type value) std::string to_wstring(type value) 1. atoi:字符串转int 2. atol:字符串转long 3. atoll:字符串转long long 4. atof:字符串转float #### 6.3 宽窄字符转换 ``` std::wstring str=L"中国人"; //宽窄字符转换器 std::codecvt_utf8 std::codecvt_utf16 std::codecvt_utf8_utf16 std::wstring_convert ```