1

我需要花时间以 HH:MM 形式作为用户输入,然后对其进行验证。它需要以某种形式出现在适当的时间。关于如何做到这一点的任何好主意?

我正在尝试创建一个函数来遍历字符串,验证每个字符,然后将它们转换为数字(或某种时间戳),以便我可以将多个字符串相互比较。

我只使用 std 命名空间。

4

3 回答 3

2

使用 boost::regex 匹配字符串及其部分 (HH) 和 (MM),并使用 scanf 获取小时和分钟。

于 2012-12-22T19:28:26.250 回答
2

这听起来更像是一个算法问题,我会:

1,检查字符串的长度是否为5。
2,检查':'是否在中间。
3、检查HH是否在范围内。
4、检查MM是否在范围内。
5、转换成方便你的格式。

于 2012-12-22T19:31:22.173 回答
1

对于这个特定的问题,它可能是矫枉过正,但这种任务非常适合状态机。基本上,您需要一次读取一个字符,每个字符都可以更改机器的状态,直到您最终处于成功或错误状态。例如:

  1. 第一个字符
    • 如果不是数字,则更改为错误状态
    • 否则存储值并更改为状态 2
  2. 第二个字符
    • 如果不是数字,则更改为错误状态
    • 否则将存储的值乘以 10 并添加第二个字符。如果结果超出范围,则更改为错误状态。否则,更改为状态 3
  3. 第三个字符
    • 如果:,则更改为状态 4,否则更改为错误状态
  4. 第四个字符
    • 与第一个字符类似,成功后变为状态 5。
  5. 第五个字符
    • 类似于第二个字符,成功后变为状态 6。
  6. 成功状态
    • 赢家是你!
  7. 错误状态
    • 处理错误,呵呵。
于 2012-12-22T22:30:24.527 回答