用C++想要让发出去的log打印一个时间戳,接收的log再打印一个时间戳,用什么函数
时间: 2024-03-16 10:41:55 浏览: 64
可以使用C++标准库中的chrono和ctime头文件中的函数来实现。
首先,可以使用chrono头文件中的system_clock类来获取当前时间戳:
```c++
auto now = chrono::system_clock::now();
auto now_time = chrono::system_clock::to_time_t(now);
```
其中,now()函数返回当前时间点,to_time_t()函数将时间点转换为C-style的时间类型。
接下来,可以使用ctime头文件中的函数将时间戳转换为可读时间字符串:
```c++
char time_str[100];
ctime_s(time_str, sizeof time_str, &now_time);
```
其中,ctime_s()函数将时间戳转换为可读时间字符串,time_str为输出字符串的指针,sizeof time_str为输出字符串的大小,&now_time为输入的时间戳。
然后,将时间字符串和log信息一起输出即可:
```c++
cout << time_str << " " << log_msg << endl;
```
完整的代码示例如下:
```c++
#include <iostream>
#include <chrono>
#include <ctime>
using namespace std;
void log(const string& log_msg) {
auto now = chrono::system_clock::now();
auto now_time = chrono::system_clock::to_time_t(now);
char time_str[100];
ctime_s(time_str, sizeof time_str, &now_time);
cout << time_str << " " << log_msg << endl;
}
int main() {
log("发送一个log");
log("接收到一个log");
return 0;
}
```
输出结果类似于:
```
Tue Jul 27 14:36:24 2021 发送一个log
Tue Jul 27 14:36:25 2021 接收到一个log
```
注意,ctime_s()函数是C11标准中引入的安全版本,如果你的编译器不支持该函数,可以使用ctime()函数代替,但需要自己处理字符串缓冲区溢出的问题。
阅读全文