我正在用 Visual C++ 设计一个图形用户界面,有一个文本框供用户输入值,以便执行计算。如何验证输入以确保它可以转换为 double 值?
最佳答案
在任何有 std::string
的 C++ 环境中字段并希望检查它是否包含 double
,您可以简单地执行以下操作:
#include <sstream>
std::istringstream iss(string_value);
double double_value;
char trailing_junk;
if (iss >> double_value && !(iss >> trailing_junk))
{
// can use the double...
}
如前所述,这将拒绝类似 "1.234q"
的内容或 "-13 what?"
但接受周围的空白,例如" 3.9E2 "
.如果您想拒绝空格,请尝试 #include <iomanip>
然后 if (iss >> std::noskipws >> double_value && iss.peek() == EOF) ...
.
您也可以使用旧式 C API 执行此操作:
double double_value;
if (sscanf(string_value.c_str(), "%lf%*c", &double_value) == 1)
关于c++ - 在 Visual C++ 中测试 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515205/