24時間を表す入力文字列があります。有効な入力は次のような文字列です。
7:04
07:4
7:4
07:04
そして、無効な入力文字列は明らかに。のようなものになります25:68
。時刻形式を検証し、時刻が今日のものであると仮定して、エポック形式で時刻を解析する簡単な方法はありますか?ここで便利なブーストライブラリはありますか?
24時間を表す入力文字列があります。有効な入力は次のような文字列です。
7:04
07:4
7:4
07:04
そして、無効な入力文字列は明らかに。のようなものになります25:68
。時刻形式を検証し、時刻が今日のものであると仮定して、エポック形式で時刻を解析する簡単な方法はありますか?ここで便利なブーストライブラリはありますか?
Unixライクなシステムで標準となっているstrptimeを使用してこれを行うことができます: http ://www.kernel.org/doc/man-pages/online/pages/man3/strptime.3.html
2つのオプションがあります。
単純な正規表現またはboost::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;
この回答を参照してください。STLに限定されていない場合はboost.Regex
、検証部分に使用できますが、これは非常に単純な問題であるため、独自のソリューションを簡単に展開できます。