首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证"-2-2“、"--22”或"2--2“这样的CString不是有效的

验证"-2-2“、"--22”或"2--2“这样的CString不是有效的
EN

Stack Overflow用户
提问于 2015-01-16 20:41:30
回答 1查看 121关注 0票数 0

在C++中,如何验证像"-2-2“、"--22”或"2--2“这样的CString不是有效的整数。

我尝试了以下代码:

代码语言:javascript
复制
// CString input in the edit box that needs to be verified
   CString input_to_editbox
// verify its a number or not
   if (input_to_editbox.SpanIncluding(L"-0123456789") == input_to_editbox)
   //numeric
   AfxMessageBox(L"it is an integer");
   else
   //Non numeric
   AfxMessageBox(L"Not an integer");

但我无法验证"-2-2“或"--22”或"2--2“是否是非法和错误的整数。

EN

回答 1

Stack Overflow用户

发布于 2015-02-03 21:45:56

我在使用DDX_函数时遇到了同样的问题,这些函数对它们的输入不是很严格。我已经用scanf (或者更好的_stscanf_s)解决了这个问题。

代码语言:javascript
复制
int nValue;
unsigned charsRead = 0;
const int fieldsRead = _stscanf_s(str, _T("%d%n"), &nValue, &charsRead);
if(fieldsRead == 1  &&  charsRead == _tcslen(str)) {
    // We have read all fields and we have read the complete string,
    // so str contains a valid pattern.
}

如果您想要读取其他类型(例如"%u%n")或多个值(例如"rate is:%d/%d Mbits/s%n"),您可以轻松地调整该方法。但不要忘记将fieldsRead与正确的值进行比较。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27984209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档