我有一個表示24h時間的輸入字符串。有效的輸入是像字符串:如何以短時間格式驗證輸入字符串
7:04
07:4
7:4
07:04
和無效輸入的字符串會明顯像25:68
。是否有任何簡單的方法來驗證的時間格式,然後解析時間是現在的時代?有沒有可能在這裏得到方便的提升庫?
我有一個表示24h時間的輸入字符串。有效的輸入是像字符串:如何以短時間格式驗證輸入字符串
7:04
07:4
7:4
07:04
和無效輸入的字符串會明顯像25:68
。是否有任何簡單的方法來驗證的時間格式,然後解析時間是現在的時代?有沒有可能在這裏得到方便的提升庫?
可以使用strptime,這是類Unix系統標準做到這一點: http://www.kernel.org/doc/man-pages/online/pages/man3/strptime.3.html
見this answer。如果你不限於STL,你可以使用boost.Regex
作爲驗證部分,雖然這是一個簡單的問題,你可以輕鬆地推出自己的解決方案。
我看到兩個選項:
簡單的正則表達式或升壓:: xpressive中(我喜歡它更多)。
獲取分號之間的數字並將它們轉換爲數字,然後檢查它們的值。事情是這樣的:
string sTime("53:30"); int iSemiColon = sTime.find(':'); if (atoi(sTime.substr(0, iSemiColon).c_str()) >= 24) return false; if (atoi(sTime.substr(iSemiColon + 1).c_str()) >= 60) return false;
[?正則表達式(http://en.cppreference.com/w/cpp/regex) – 2013-02-17 14:09:04