我有一个来自mysql的日期时间。我需要提取每个部分:解析yyyy-MM-dd HH:mm:ss日期时间字符串?
int year;
int month;
int day;
int hour;
int min;
int sec;
例如:
2014-06-10 20:05:57
是否有一个不是通过字符串流运行它为每个组件更简单的方法? (请勿使用boost或C++ 11解决方案)。
感谢
我有一个来自mysql的日期时间。我需要提取每个部分:解析yyyy-MM-dd HH:mm:ss日期时间字符串?
int year;
int month;
int day;
int hour;
int min;
int sec;
例如:
2014-06-10 20:05:57
是否有一个不是通过字符串流运行它为每个组件更简单的方法? (请勿使用boost或C++ 11解决方案)。
感谢
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这将使一个更强大的字符串解析。
容易出现轻微偏差格式:/ ... –
@πάνταῥεῖ:OP已经声明格式是固定宽度。 – DavidO
@πάνταῥεῖ是的,但如果OP想要处理很多格式,我相信他会考虑C++ 11或任何可以帮助解决这个问题的boost函数。 –
请注意,您几乎可以肯定要解析“yyyy-MM-dd HH:mm:ss”。 –
当你最后一句话。我就像“'std :: get_time'!'std :: get_time'!'std :: get_time'!Aww废话!” – chris
不,我问如何在C++中给出std字符串日期时间 – jmasterx