我正在研究这个答案。我遇到了一个难题:scanf
有一个任务抑制'*'
:
如果存在此选项,则该函数不会将转换结果分配给任何接收参数
但是在 Visual Studio、libc++ 和 libstdc++ 上使用时会出现运行时错误:get_time
所以我认为它不受支持。'*'
str >> get_time(&tmbuf, "%T.%*Y")
因此,我选择通过阅读tmbuf.tm_year
两次来忽略输入:
str >> get_time(&tmbuf, "%H:%M:%S.%Y UTC %b %d %Y");
这可行,而且似乎是我唯一的选择,get_time
因为'*'
不被接受。但众所周知,仅仅因为它有效并不意味着它已被定义。有人可以确认:
- 它被定义为两次分配相同的变量
get_time
- 流将始终从左到右读取,因此第一次发生的
%Y
将被踩踏,而不是第二次