visual-c++cstringvisual-c++-2005

How to check if a CString contains only numeric characters


I'm reading from a file and parsing its contents. I need to make sure a CString value consist of only numbers. What are the different methods i could achieve it?

Sample code:

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";
  }
}

Solution

  • You can iterate over all characters and check with the function isdigit whether the character is numeric.

    #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");
    }
    

    Another solution that does not use isdigit but only CString member functions uses SpanIncluding:

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