put_time函数说明
时间: 2023-08-01 22:11:37 浏览: 54
`put_time`函数是C++ STL中的一个输出流操作符,用于将时间格式化为一个字符串并输出到流中。它的语法如下:
```c++
template <class charT, class traits, class T>
basic_ostream<charT, traits>& put_time(const std::tm* tmb, const charT* fmt);
```
其中,`tmb`参数是一个指向`tm`结构的指针,包含了要格式化的时间信息;`fmt`参数是一个格式字符串,指定了输出的时间格式。`put_time`函数会将格式化后的时间字符串输出到流中,并返回该流的引用。
例如,下面的代码将当前时间格式化为一个字符串,然后输出到标准输出流中:
```c++
#include <iostream>
#include <iomanip>
#include <ctime>
int main() {
std::time_t now = std::time(nullptr);
std::tm* t = std::localtime(&now);
std::cout << std::put_time(t, "%Y-%m-%d %H:%M:%S") << std::endl;
return 0;
}
```
输出结果为:
```
2022-01-01 10:30:00
```
注意,`put_time`函数依赖于本地化设置,因此输出的时间格式可能会因为本地化设置不同而有所差异。
相关问题
put_time函数说明 精确到毫秒
C++ STL中的`put_time`函数不支持精确到毫秒的时间输出。不过,我们可以使用其他方法来实现这个功能。一种方法是使用`std::chrono`库来获取高精度时间,然后将其转换为`std::tm`结构,最后使用`put_time`函数将其格式化输出。
下面是一个示例代码,演示了如何将当前时间精确到毫秒,并输出到标准输出流中:
```c++
#include <iostream>
#include <iomanip>
#include <chrono>
#include <ctime>
int main() {
auto now = std::chrono::system_clock::now();
auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()) % 1000;
std::time_t t = std::chrono::system_clock::to_time_t(now);
std::tm* tm = std::localtime(&t);
std::cout << std::put_time(tm, "%Y-%m-%d %H:%M:%S.") << std::setfill('0') << std::setw(3) << ms.count() << std::endl;
return 0;
}
```
输出结果类似于:
```
2022-01-01 10:30:00.123
```
在这个示例中,我们使用`std::chrono::system_clock::now()`获取当前时间,然后使用`std::chrono::duration_cast<std::chrono::milliseconds>`将其转换为毫秒数,最后使用`std::localtime`函数将时间转换为本地时间,然后使用`std::put_time`函数将其格式化输出。注意,在输出毫秒数时,我们使用了`std::setfill('0')`和`std::setw(3)`来保证输出的毫秒数始终占据三位,并在不足三位时前面补零。
put_time 头文件
`std::put_time`函数是C++11引入的新特性,位于`<iomanip>`头文件中。因此,在使用`std::put_time`函数时,需要包含`<iomanip>`头文件。
例如,下面的代码将当前时间格式化为一个字符串,并输出到标准输出流中:
```c++
#include <iostream>
#include <iomanip>
#include <ctime>
int main() {
std::time_t now = std::time(nullptr);
std::tm* t = std::localtime(&now);
std::cout << std::put_time(t, "%Y-%m-%d %H:%M:%S") << std::endl;
return 0;
}
```
输出结果为:
```
2022-01-01 10:30:00
```
在这个例子中,我们使用了`<iostream>`、`<iomanip>`和`<ctime>`头文件。其中,`<iomanip>`头文件提供了`std::put_time`函数的定义。