c ++检查字符串是否有效整数或小数(负数和正数)

c++ Check if string is valid Integer or decimal (both negative and positive cases)

如何检查字符串是否为有效数字?

string n1 = "0.23"; //Valid
string n2 = "123"; //Valid
string n3 = "-77"; //Valid
string n4 = "-0.73"; //Valid
string n5 = "345.567"; //Valid
string e6 = "+67"; //Invalid
string e7 = "a34"; //Invalid
string e8 = ".56"; //Invalid
string e9 = "15."; //Invalid
string e10 = "15-16"; //Invalid
string e11 = ".7-53"; //Invalid

我试过这个功能:

bool is_digits(const std::string &str){
    return str.find_first_not_of("0123456789.-") == std::string::npos;
}

但显然它会 return true 即使我将最后两个无效示例作为参数传递。

string e8 = ".56"; //Invalid
string e9 = "15." //Invalid

答案是一个简单的正则表达式:

bool regexmatch(string s){

    regex e ("[-+]?([0-9]*\.[0-9]+|[0-9]+)");

    if (regex_match (s,e))
        return true;

    return false;
}

它将 return 按预期在整数(即 56、-34)和浮点数(即 6.78、-34.23、0.6)上为真。