【发布时间】:2012-12-06 11:34:27
【问题描述】:
检查“2.4393”或“2”之类的字符串是否有效的最快方法是什么?它们都可以用双精度表示,而字符串“2.343”。还是“ab.34”不是?特别是,我希望能够读取任何字符串,如果它 can 是双精度,则为其分配一个双精度变量,如果它不能是双精度(如果它是一个单词或只是无效输入),将显示一条错误消息。
【问题讨论】:
-
你的输入编码是什么?简单的 ASCII 还是别的什么?
-
stackoverflow.com/questions/392981/… 可能会有所帮助。
-
将其放入流中(例如
std::stringstream)并执行if ( !(stream >> mydouble) ) { myError(); }。 -
@stefan:那不接受“3z”或“1.1”之类的东西吗?
-
@j_random_hacker:
"2 "呢?该问题没有说明它是否有效,下面的答案认为它无效,但您的代码认为它有效,因为它跳过了空格然后无法读取字符。
标签: c++