HH:MM形式のユーザー入力として時間をかけて、検証する必要があります。その特定の形式では適切な時間である必要があります。それを行う方法についての良いアイデアはありますか?
文字列を反復処理し、各文字を検証してから、それらを数値(またはある種のタイムスタンプ)に変換して、複数の文字列を相互に比較できる関数を作成しようとしています。
std名前空間のみを使用しています。
HH:MM形式のユーザー入力として時間をかけて、検証する必要があります。その特定の形式では適切な時間である必要があります。それを行う方法についての良いアイデアはありますか?
文字列を反復処理し、各文字を検証してから、それらを数値(またはある種のタイムスタンプ)に変換して、複数の文字列を相互に比較できる関数を作成しようとしています。
std名前空間のみを使用しています。
boost::regex を使用して文字列とその部分 (HH) および (MM) を照合し、scanf を使用して時間と分を取得します。
アルゴリズムの問題のように聞こえますが、私は次のようにします。
1、文字列の長さが 5 の場合
は確認します。 2、「:」が途中にあるかどうかを確認します。
3、HHが範囲内であることを確認します。
4、MM が範囲内にあることを確認します。
5, 使いやすいフォーマットに変換します。
この特定の問題にはやり過ぎかもしれませんが、この種のタスクはステート マシンに最適です。基本的に、一度に 1 文字ずつ入力を読み取る必要があり、各文字は、成功またはエラー状態になるまでマシンの状態を変更できます。例えば:
:
、状態 4 に変更し、それ以外の場合はエラー状態に変更します