我有一个来自mysql的日期时间。我需要提取每个部分:
int year;
int month;
int day;
int hour;
int min;
int sec;
示例:
2014-06-10 20:05:57
是否有比通过stringstream为每个组件运行更简单的方法? (请不要使用boost或c ++ 11解决方案。)
由于
答案 0 :(得分: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.
}
另一个不错的解决方案也是使用C++11 regex,这样可以更好地解析字符串。