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

时间:2021-05-14 17:57:30

标签: c++ string integer

假设我有这是一个例子

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

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

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

这将返回 true,因为它实际上包含它的一部分,或者我认为它会返回 true 我没有真正用数字案例测试它我只在它是一个没有数字的普通字符串时测试它,提前致谢. 注意:所有这些比较都在一个有序的链表中,所以我 100% 肯定编程 3 将在编程 15 之后对任何其他相似的单词相同但最后的数字不同。 列表中的所有元素都采用相同的格式。

1 个答案:

答案 0 :(得分:0)

#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;
}