int main()
{
char *a = "i am mad";
string str(a);
cout<<str.rfind("mad");
system("pause");
return 0;
}
所以我试图比较一个字符串的特定部分。让我们说字符串包含mad
然后我会执行一些操作,如果不是,我将执行一些其他操作。我的源字符串仅以const char格式存在。
我能够找到子串的位置,即mad
,但我不能用它来比较某些东西。
这就是我找到子串的位置但我不知道如何比较的方法。
我应该改变什么?
我知道mad
从第5个位置开始,但我该如何比较。?
答案 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/