如何检查CString是否只包含数字字符

时间:2012-10-08 07:13:40

标签: visual-c++ cstring visual-c++-2005

我正在读取文件并解析其内容。我需要确保CString值仅由数字组成。我能实现的不同方法是什么?

示例代码:

Cstring Validate(CString str)
{
  if(/*condition to check whether its all numeric data in the string*/)
  {
     return " string only numeric characters";
  }
  else
  {
     return "string contains non numeric characters";
  }
}

2 个答案:

答案 0 :(得分:16)

您可以遍历所有字符并使用函数isdigit检查字符是否为数字。

#include <cctype>

Cstring Validate(CString str)
{
    for(int i=0; i<str.GetLength(); i++) {
        if(!std::isdigit(str[i]))
            return _T("string contains non numeric characters");
    }
    return _T("string only numeric characters");
}

另一个不使用isdigit而只使用CString成员函数的解决方案使用SpanIncluding

Cstring Validate(CString str)
{
    if(str.SpanIncluding("0123456789") == str)
        return _T("string only numeric characters");
    else
        return _T("string contains non numeric characters");
}

答案 1 :(得分:0)

您可以使用 CString ::查找

int Find( TCHAR ch ) const;

int Find( LPCTSTR lpszSub ) const;

int Find( TCHAR ch, int nStart ) const;

int Find( LPCTSTR pstr, int nStart ) const;

示例

CString str("The stars are aligned");
int n = str.Find('e')
if(n==-1)   //not found
else        //found

请参阅MSDN