解析yyyy-MM-dd HH:mm:ss日期时间字符串?

jma*_*erx 4 c++

我有一个来自mysql的日期时间.我需要提取每个部分:

int year;
int month;
int day;
int hour;
int min;
int sec;
Run Code Online (Sandbox Code Playgroud)

例:

2014-06-10 20:05:57
Run Code Online (Sandbox Code Playgroud)

有没有比通过stringstream为每个组件运行它更简单的方法?(请不要使用boost或c ++ 11解决方案).

谢谢

gla*_*ert 7

sscanf()可能是最直接的选择.它是一个C库函数,所以纯粹主义者可能不赞成它.

这是一个例子:

int year;
int month;
int day;
int hour;
int min;
int sec;

const char * str = "2014-06-10 20:05:57";

if (sscanf(str, "%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &min, &sec) == 6)
{
    // sscanf() returns the number of elements scanned, so 6 means the string had all 6 elements.
    // Else it was probably malformed.
}
Run Code Online (Sandbox Code Playgroud)

这是一个现场测试.

另一个不错的解决方案也是使用C++ 11正则表达式,这将使字符串更健壮的解析.