首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用std::get_time解析日期/时间字符串需要分隔符吗?

用std::get_time解析日期/时间字符串需要分隔符吗?
EN

Stack Overflow用户
提问于 2014-01-16 21:00:16
回答 2查看 10.1K关注 0票数 8

使用std::get_time解析字符串是否需要分隔符?我找不到任何证据可以说是的。我试图解析一个ISO日期/时间字符串,例如"20140105T123456“-例如:

例如,

代码语言:javascript
复制
#include <iostream>
#include <sstream>
#include <locale>
#include <iomanip>
#include <ctime>

int main(int argc, char* argv[])
{
    std::tm t = { 0 };

    // fails
    std::istringstream ss("20141105T123456");
    ss >> std::get_time(&t, "%Y%m%dT%H%M%S");

    // works
    //std::istringstream ss("2014 11 05 T 12 34 56");
    //ss >> std::get_time(&t, "%Y %m %d T %H %M %S");

    std::ostringstream os;
    std::cout << std::put_time(&t, "%c") << std::endl;
}

我正在使用2013。我试着在Linux上构建,但是我拥有的GCC的最新版本是4.7.3,它似乎还不支持get_time。

我犯了个愚蠢的错误还是需要分离器?

EN

Stack Overflow用户

发布于 2016-07-14 20:49:18

标准中对POSIX strptime()函数的引用造成了一些混乱。POSIX标准指定转换操作符由非alpha字符分隔.

应用程序应确保在任何两个转换规范之间存在空白或其他非字母数字字符。

GLIBC版本的strptime (和,海事组织,任何正常的执行)不需要这些分离器。[http://man7.org/linux/man-pages/man3/strptime.3.html -见注释部分。]

要求分隔符使得无法解析符合ISO-8601日期/时间基本格式。由于C++也是一个ISO标准,它的strptime()函数应该能够解析这种格式。

我认为需要澄清std::get_time()文档,以明确说明不需要分隔符,并通过指向ISO-8601证明该声明的合理性。应该进一步澄清的是,POSIX strptime()标准只指定符合实现所需支持的转换说明符。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21172767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档