string date_time(time_t posix) { char buf[20]; tm tp = *localtime_s(&posix); return { buf,strftime(buf,sizeof(buf),"%F %T",&tp) }; },在使用*local time_s(&posix);时有bug,请帮我修改
时间: 2024-01-22 18:19:41 浏览: 59
可以尝试使用以下代码替换原有代码:
```c++
std::string date_time(time_t posix) {
char buf[20];
struct tm tp;
localtime_s(&tp, &posix);
strftime(buf, sizeof(buf), "%F %T", &tp);
return buf;
}
```
主要的修改包括:
1. 将 `tm tp = *localtime_s(&posix);` 修改为 `struct tm tp; localtime_s(&tp, &posix);`,因为 `localtime_s` 函数需要传入两个参数:一个是 `struct tm` 结构体指针,表示要填充的时间信息;另一个是 `const time_t*` 类型的指针,表示要转换的时间戳。
2. 修改 `return` 语句,直接返回 `buf` 数组即可。要注意在函数返回时,`buf` 数组仍然有效,因为它是在栈上分配的。
阅读全文