提问人:Christoffer 提问时间:12/23/2012 最后编辑:antonio081014Christoffer 更新时间:2/17/2013 访问量:269
转换和验证字符串
Convert and validate string
问:
我需要花时间作为 HH:MM 形式的用户输入,然后对其进行验证。 它需要以某种格式进行适当的时间。关于如何做到这一点有什么好主意吗?
我正在尝试制作一个函数,该函数将遍历字符串,验证每个字符,然后将它们转换为数字(或某种时间戳),以便我可以将多个字符串相互比较。
我只使用 std 命名空间。
答:
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
对于这个特定问题来说,它可能有点矫枉过正,但这种任务非常适合状态机。基本上,您需要一次读取一个字符的输入,每个字符都可以更改机器的状态,直到您最终处于成功或错误状态。例如:
- 第一个字符
- 如果不是数字,请更改为错误状态
- 否则,存储值并更改为状态 2
- 第二个字符
- 如果不是数字,请更改为错误状态
- 否则,将存储值乘以 10 并添加第二个字符。如果结果超出范围,请更改为错误状态。否则,请更改为状态 3
- 第三个字符
- 如果 ,则更改为状态 4,否则更改为错误状态
:
- 如果 ,则更改为状态 4,否则更改为错误状态
- 第四个字符
- 与第一个字符类似,成功后更改为状态 5。
- 第五个字符
- 与第二个字符类似,成功后更改为状态 6。
- 成功状态
- 赢家就是你!
- 错误状态
- 处理错误,呃。
评论