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)上为真。
如何检查字符串是否为有效数字?
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)上为真。