我有一个接受两个字符串的函数,“第一个”和“第二个” 我想检查第二个字符串是否采用以下格式: “first”_number,所以我可以重新调整第二个字符串中的数字
例如,如果第一个字符串是hello 第二个字符串是hello_7,然后我想返回7 .. 如果字符串不是这种格式,我返回0 ..
任何帮助?我只能使用字符串标准..如果没有别的方式,那么我可以使用其他标准函数。
int Plain::getNumber(string first, string second){
std::size_t pos = second.find("_");
std::string str1 = str.substr (0,pos);
if(str1 == first){
// here i want to get the number
}
return 0;
}
答案 0 :(得分:2)
更新代码以检查输入错误...
int Plain::getNumber(string first, string second){ //"hello" and "hello_7"
string matchPattern = first + "_"; // "hello_"
std::size_t pos = second.find(matchPattern); // find "hello_" within "hello_7"
if (pos != 0) { // validate that it's at the beginning
return 0; // not a match
}
string postFix = second.substr(matchPattern.size());
return (int)strtol(postFix.c_str(), nullptr, 10);
return result;
}
答案 1 :(得分:0)
如果您不介意使用C ++ 11,可以使用std :: stoi
std::string someString = "23123";
int parsedNumber = std::stoi(someString);
否则,请使用atoi:
std::string someString = "23123";
int parsedNumber = atoi(someString.c_str());