将字符串的特定部分与另一个字符串进行比较

时间:2017-06-22 05:16:29

标签: c++ string visual-studio visual-c++

int main()
{
char *a = "i am mad";
string str(a);
cout<<str.rfind("mad");

system("pause");
return 0;
}

所以我试图比较一个字符串的特定部分。让我们说字符串包含mad然后我会执行一些操作,如果不是,我将执行一些其他操作。我的源字符串仅以const char格式存在。 我能够找到子串的位置,即mad,但我不能用它来比较某些东西。

这就是我找到子串的位置但我不知道如何比较的方法。 我应该改变什么? 我知道mad从第5个位置开始,但我该如何比较。?

4 个答案:

答案 0 :(得分:0)

您需要对rfind()的结果进行比较。

int main()
{
    const char *a = "i am mad";
    string str(a);

    if (str.rfind("mad") == string::npos) // string::npos means not found, according to the docs
    {
        cout << "All is well" << endl;
    }
    else
    {
        cout << "Uh oh, somebody's mad!" << endl;
    }

    system("pause");
    return 0;
}

答案 1 :(得分:0)

如果你能找到疯狂的起始索引,那么只需从中创建一个substr。 str2 = str.substr(&#39; mad&#39;的起始索引,&#39; mad&#39;的长度)

然后您可以使用str2与其他

进行比较

答案 2 :(得分:0)

您可以将返回索引与string :: npos

进行比较
int ret = str.rfind("mad", str.length());
if (ret != string::npos)
{
    // mad found in str
}
else
{
    // mad not found
}

答案 3 :(得分:0)

您可能也对正则表达式感兴趣。他们允许你这样做以及更多...... 看,例如这里是初学者:https://en.wikipedia.org/wiki/Regular_expression(如果你不知道什么是正则表达式),这里是C ++ STL正则表达式的实现:http://www.cplusplus.com/reference/regex/