如何检查条目是否包括浮点数

时间:2013-11-06 16:26:07

标签: c++ visual-c++ mfc numeric editbox

是否有一种简单的方法或函数来检查Editbox的条目是否为数字,包括浮点数。不允许使用任何字母或字母数字条目。没有浮点数部分我会检查ascii但我认为它不适用于浮点数。

由于

2 个答案:

答案 0 :(得分:2)

由于您的问题标有mfc,因此以下是使用CString的代码段: <击>

<击>
CString ss;
float ff;
GetDlgItemText(IDC_MY_EDIT_BOX, ss);
if (_stscanf_s(ss, _T("%f"), &ff) == 1)
    // ff contains the value
else
    // error

如果需要使用双精度数,请在scanf调用中使用"%lf"

修改

CString ss;
float ff;
GetDlgItemText(IDC_MY_EDIT_BOX, ss);
LPCTSTR lpszString = ss;
TCHAR *endptr;
ff = (float) _tcstod(lpszString, &endptr);
if (endptr != lpszString && *endptr == '\0')
    // ff contains the value
else
    // error

答案 1 :(得分:1)

如果是对话框,则可以向对话框添加编辑控件。比启动对话框向导将变量添加到此编辑控件。选择float类型。 DDX_Text例程将完成剩下的工作。

但是这将允许输入字母字符。如果你想解决这个问题。您可以使用特殊的OnChar(WM_CHAR)处理程序对编辑控件进行子类化,该处理程序只允许使用十进制数和小数点。