如何比较字符串中包含int的部分



让我们假设我有这是一个例子

string str1 = "programming 15"
string str1 = "programming 3"

如果我使用类似==、<的正常比较>,结果将返回编程15小于编程3。但是,如果我想比较像int这样的数字而不是字符串,该怎么办?如果是字符串数组呢我的意思是字符串长度是可变的我用这样的东西来知道它是否包含字符串部分,如果我错了,请纠正我。

if(str1.find(str2) != std::string::npos)

这将返回true,因为它实际上包含它的一部分,或者我认为它将返回true。我没有真正用数字大小写测试它。我只是在它是一个没有数字的普通字符串时测试它,提前感谢。注意:所有这些比较都是在一个有序的链表中进行的,所以我100%确信编程3将在编程15之后立即进行,对于任何其他类似的单词都是一样的,但结尾有不同的数字。列表中的所有元素都使用相同的格式。

#include <iostream>
#include <string>
#include <regex>
using namespace std;

int getNum(const string& s)
{
regex reg("([0-9]+)");
smatch match;

if( std::regex_search(s.begin(), s.end(), match, reg) ){
string numInStr = match[0]; 
return stoi(numInStr);
}

return -1;
}
int main()
{
regex reg("([0-9]+)");
const string str1 = "programming 15";
const string str2 = "programming 13";
smatch match;

cout << getNum(str1) << endl;
cout << getNum(str2) << endl;

return 0;
}

最新更新