【发布时间】:2013-09-27 13:04:28
【问题描述】:
我需要将宽字符串转换为双精度数。据推测,该字符串包含一个数字而没有其他内容(可能是一些空格)。如果字符串包含其他任何内容,则应指示错误。所以我不能使用stringstream - 如果字符串包含其他内容,它将提取一个数字而不指示错误。
wcstod 似乎是一个完美的解决方案,但它在 Android(GCC 4.8,NDK r9)上运行错误。我还可以尝试哪些其他选项?
【问题讨论】:
-
使用
std::stod会在输入错误的情况下抛出异常。 -
"如果字符串包含其他内容,它将提取一个数字而不指示错误。"嗯?如果提取失败,则应设置
failbit。 (如果您启用stringstream的例外,您也会得到一个例外。) -
@MM.:我相信它是
strtod的包装,我的输入是宽字符串。 -
@DyP:如果失败,将抛出异常,但此字符串没有错误,我需要在这里出错:“123 asf”。
-
获取源代码并修复适用于 Android 的 wcstod
标签: c++ string type-conversion double