【发布时间】:2012-05-09 11:32:30
【问题描述】:
我正在用 Visual c++ 设计一个 gui,并且有一个文本框,用户可以在其中输入值以便执行计算。如何验证输入以确保它可以转换为 double 值?
【问题讨论】:
-
检查每个数字是数字并且有零个或一个句点是否有效?你可以为此设计一个非常小的正则表达式。或者,如果您接受它所接受的输入,则字符串流可能会很有用。
-
请注意,根据区域设置,小数点可能是逗号,而不是句点。
-
@Pete,说得好。不过,在正则表达式中仍然很容易。
-
如果你使用 MFC - 你可以使用
DDX_Text。它将字符串转换为double,如果无法完成转换,还会向用户报告错误。 -
@Chris:实际上并非如此......您可以轻松地使用逗号或句点的正则表达式(
[,\.]或者您可以转义它),但如果您同时接受两者,则无论哪个在您的实际语言环境中是不允许的,但稍后仍可能会意外破坏某些内容(即,当您尝试将值传递给尝试实际转换的函数时)。