121 lines
2.8 KiB
Markdown
121 lines
2.8 KiB
Markdown
|
### 使用c++11中便利的工具
|
|||
|
#### 6.1 处理日期和时间的chrono库
|
|||
|
#### 6.1.1 记录时长的duration
|
|||
|
```
|
|||
|
std::chrono::duration <rep,std::ratio<1,1>> seconds;//表示秒
|
|||
|
```
|
|||
|
chrono的count(),可以获取时钟周期数<br>
|
|||
|
需要注意的是:当两个duration时钟周期不同的时候,会先统一周期,再进行计算。<br>
|
|||
|
还可以通过duration_cast<>()进行时钟周期的转换
|
|||
|
#### 6.1.2 表示时间点的time point
|
|||
|
#### 6.1.3 获得系统时钟的clocks
|
|||
|
#### 6.1.4 计时器timer
|
|||
|
```
|
|||
|
#include<chrono>
|
|||
|
|
|||
|
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::milliseconds>(
|
|||
|
std::chrono::high_resolution_clock::now() - m_begin).count();
|
|||
|
}
|
|||
|
|
|||
|
//微秒
|
|||
|
int64_t elapsed_micro() const
|
|||
|
{
|
|||
|
return std::chrono::duration_cast<std::chrono::microseconds>(
|
|||
|
std::chrono::high_resolution_clock::now() - m_begin).count();
|
|||
|
}
|
|||
|
|
|||
|
//纳秒
|
|||
|
int64_t elapsed_nano() const
|
|||
|
{
|
|||
|
return std::chrono::duration_cast<std::chrono::nanoseconds>(
|
|||
|
std::chrono::high_resolution_clock::now() - m_begin).count();
|
|||
|
}
|
|||
|
|
|||
|
//秒
|
|||
|
int64_t elapsed_seconds() const
|
|||
|
{
|
|||
|
return std::chrono::duration_cast<std::chrono::seconds>(
|
|||
|
std::chrono::high_resolution_clock::now() - m_begin).count();
|
|||
|
}
|
|||
|
|
|||
|
//分
|
|||
|
int64_t elapsed_minutes() const
|
|||
|
{
|
|||
|
return std::chrono::duration_cast<std::chrono::minutes>(
|
|||
|
std::chrono::high_resolution_clock::now() - m_begin).count();
|
|||
|
}
|
|||
|
|
|||
|
//时
|
|||
|
int64_t elapsed_hours() const
|
|||
|
{
|
|||
|
return std::chrono::duration_cast<std::chrono::hours>(
|
|||
|
std::chrono::high_resolution_clock::now() - m_begin).count();
|
|||
|
}
|
|||
|
|
|||
|
private:
|
|||
|
std::chrono::time_point<std::chrono::high_resolution_clock> 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
|
|||
|
```
|