我有一個來自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