How to determine if a string is a number with C++?

后端 未结 30 2283
遇见更好的自我
遇见更好的自我 2020-11-22 08:46

I\'ve had quite a bit of trouble trying to write a function that checks if a string is a number. For a game I am writing I just need to check if a line from the file I am r

30条回答
  •  春和景丽
    2020-11-22 09:06

    I think this regular expression should handle almost all cases

    "^(\\-|\\+)?[0-9]*(\\.[0-9]+)?"
    

    so you can try the following function that can work with both (Unicode and ANSI)

    bool IsNumber(CString Cs){
    Cs.Trim();
    
    #ifdef _UNICODE
    std::wstring sr = (LPCWSTR)Cs.GetBuffer(Cs.GetLength());
    return std::regex_match(sr, std::wregex(_T("^(\\-|\\+)?[0-9]*(\\.[0-9]+)?")));
    
    #else
        std::string s = (LPCSTR)Cs.GetBuffer();
    return std::regex_match(s, std::regex("^(\\-|\\+)?[0-9]*(\\.[0-9]+)?"));
    #endif
    }
    

提交回复
热议问题