转换和验证字符串

Convert and validate string

提问人:Christoffer 提问时间:12/23/2012 最后编辑:antonio081014Christoffer 更新时间:2/17/2013 访问量:269

问:

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

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

我只使用 std 命名空间。

C++ 算法 控制台-应用程序 标准

评论


答:

2赞 Stepan Yakovenko 12/23/2012 #1

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

2赞 antonio081014 12/23/2012 #2

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

1、检查字符串的长度是否为5。
2、检查“:”是否在中间。
3、检查HH是否在范围内。
4、检查MM是否在范围内。
5,将其转换为给您带来方便的格式。

1赞 suszterpatt 12/23/2012 #3

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

  1. 第一个字符
    • 如果不是数字,请更改为错误状态
    • 否则,存储值并更改为状态 2
  2. 第二个字符
    • 如果不是数字,请更改为错误状态
    • 否则,将存储值乘以 10 并添加第二个字符。如果结果超出范围,请更改为错误状态。否则,请更改为状态 3
  3. 第三个字符
    • 如果 ,则更改为状态 4,否则更改为错误状态:
  4. 第四个字符
    • 与第一个字符类似,成功后更改为状态 5。
  5. 第五个字符
    • 与第二个字符类似,成功后更改为状态 6。
  6. 成功状态
    • 赢家就是你!
  7. 错误状态
    • 处理错误,呃。