c++ - 在 Visual C++ 中测试 double

标签 c++ .net windows

我正在用 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/

相关文章:

c# - DevExpress WaitForm 和 PreFilterMessage - 意外的 MouseMove 消息

c++ - 具有自定义类的共享内存 C++ 和 Win API 32

c++ - 在 C++ 中使用 printf 制作表格

c++ - 在我的 7 位加法器中,进位位不正确,我不知道为什么

c# - 为什么即使类被标记为 Obsoleted,这段代码仍能正确编译?

c# - 安全的 ASP.NET MVC 3 网站

windows - 没有密码的 CreateProcessAsUser 和 LogonUser

mysql - 使用参数执行批处理文件

c++ - Windows API SysWOW 重定向意外行为

c++ - 在 Variadic Template 中使用 sizeof 运算符来跳过递归结束的函数