如何检查字符串是否为有效数字?
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;
}
但很明显,即使我将最后两个无效的例子作为参数传递,它也会返回true
。
string e8 = ".56"; //Invalid
string e9 = "15." //Invalid
答案 0 :(得分:0)
答案是一个简单的正则表达式:
bool regexmatch(string s){
regex e ("[-+]?([0-9]*\.[0-9]+|[0-9]+)");
if (regex_match (s,e))
return true;
return false;
}
它将按预期在整数(即56,-34)和浮点数(即6.78,-34.23,0.6)上返回true。