std::put_time
来自cppreference.com
在标头 <iomanip> 定义
|
||
template< class CharT > /*未指定*/ put_time( const std::tm* tmb, const CharT* fmt ); |
(C++11 起) | |
用于表达式 out << put_time(tmb, fmt) 时,按照格式字符串 fmt,按照输出流 out 中当前浸染的本地环境的 std::time_put 平面,将来自给定的日历时间 tmb 的日期和时间信息转换到字符串,如同通过调用 std::strftime、std::wcsftime 或模拟(取决于CharT
)。
参数
tmb | - | 指向从 std::localtime 或 std::gmtime 获得的日历时间结构体的指针 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fmt | - | 指向指定转换格式的空终止 CharT 串的指针。
格式字符串由零或更多个说明符和通常字符(除
|
返回值
一个满足以下条件但未指定类型的对象:
- 如果 out 是具有 std::basic_ostream<CharT, Traits> 类型的对象,那么表达式 out << put_time(tmb, fmt):
- 具有 std::basic_ostream<CharT, Traits>& 类型
- 值为 out
- 行为如同调用 f(out, tmb, fmt)
其中函数 f 定义如下:
template<class CharT, class Traits> void f(std::basic_ios<CharT, Traits>& str, const std::tm* tmb, const CharT* fmt) { using Iter = std::ostreambuf_iterator<CharT, Traits>; using TimePut = std::time_put<CharT, Iter>; const TimePut& tp = std::use_facet<TimePut>(str.getloc()); const Iter end = tp.put(Iter(str.rdbuf()), str, str.fill(), tmb, fmt, fmt + Traits::length(fmt)); if (end.failed()) str.setstate(std::ios_base::badbit); }
示例
运行此代码
#include <iostream> #include <iomanip> #include <ctime> int main() { std::time_t t = std::time(nullptr); std::tm tm = *std::localtime(&t); std::cout.imbue(std::locale("ru_RU.utf8")); std::cout << "ru_RU:" << std::put_time(&tm, "%c %Z") << '\n'; std::cout.imbue(std::locale("ja_JP.utf8")); std::cout << "ja_JP:" << std::put_time(&tm, "%c %Z") << '\n'; }
输出:
ru_RU:Ср. 28 дек. 2011 10:21:16 EST ja_JP:2011年12月28日 10時21分16秒 EST
参阅
格式化 std::tm 内容为字符序列以输出 (类模板) | |
(C++11) |
剖析指定格式的日期/时间值 (函数模板) |
转换 tm 对象到自定义的文本表示 (函数) | |
转换 tm 对象为定制的宽字符串文本表示 (函数) |