std:: get_time
|
定义于头文件
<iomanip>
|
||
|
template
<
class
CharT
>
/*unspecified*/ get_time ( std:: tm * tmb, const CharT * fmt ) ; |
(C++11 起) | |
当在表达式 in >> get_time ( tmb, fmt ) 中使用时,根据格式字符串 fmt ,按照当前输入流 in 所植入区域设置的 std::time_get facet 来解析字符输入为日期/时间值。结果值存储在由 tmb 指向的 std::tm 对象中。
目录 |
参数
| tmb | - | 指向 std::tm 对象的有效指针,结果将存储于此 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
指向以空字符结尾的
CharT
字符串的指针,指定转换格式
格式字符串由零个或多个转换说明符、空白字符和普通字符(除
注意:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回值
一个未指定类型的对象,使得
-
如果
in
是类型为
std::
basic_istream
<
CharT, Traits
>
的对象,则表达式
in
>>
get_time
(
tmb, fmt
)
- 具有类型 std:: basic_istream < CharT, Traits > &
- 具有值 in
- 行为表现如同调用了 f ( in, tmb, fmt )
其中函数 f 定义为:
template<class CharT, class Traits> void f(std::basic_ios<CharT, Traits>& str, std::tm* tmb, const CharT* fmt) { using Iter = std::istreambuf_iterator<CharT, Traits>; using TimeGet = time_get<CharT, Iter>; std::ios_base::iostate err = std::ios_base::goodbit; const TimeGet& tg = std::use_facet<TimeGet>(str.getloc()); tg.get(Iter(str.rdbuf()), Iter(), str, err, tmb, fmt, fmt + Traits::length(fmt)); if (err != std::ios_base::goodbit) str.setstate(err); }
注释
如
std::time_get::do_get
所规定(此函数会调用该函数),对于未通过
fmt
中直接设置的转换说明符对应的
*
tmb
字段,此函数是否将其清零是未指定的:可移植程序应在调用
std::get_time
前将
*
tmb
的所有字段初始化为零。
示例
注意:请选择 clang 或 gcc >= 12.1 来观察输出。12.1 之前的 libstdc++ 未能正确实现 % b 格式说明符: 错误 #78714 。
#include <iomanip> #include <iostream> #include <locale> #include <sstream> int main() { std::tm t = {}; std::istringstream ss("2011-Februar-18 23:12:34"); ss.imbue(std::locale("de_DE.utf-8")); ss >> std::get_time(&t, "%Y-%b-%d %H:%M:%S"); if (ss.fail()) std::cout << "Parse failed\n"; else std::cout << std::put_time(&t, "%c") << '\n'; }
可能的输出:
Sun Feb 18 23:12:34 2011
参见
|
从输入字符序列解析时间/日期值到
std::tm
(类模板) |
|
|
(C++11)
|
根据指定格式格式化并输出日期/时间值
(函数模板) |
|
(C++20)
|
从流中解析
chrono
对象
(函数模板) |