我正在实现一个非常简单的c ++代码来演示find方法。第二个字符串中的字母应该出现在第一个字符串中:
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
void solution(string str1, string str2){
int size1 = str1.size();
int size2 = str2.size();
if(size1 != size2){
cout<<"not equal";
return;
}
for (int i = 0; i <size2; i++){
if (str1.find(str2[i],0)){
cout<<"found "<<str2[i]<<endl;
}
}
}
int main(){
solution("abcd", "dacb");
return 0;
}
我总是得到类似
的输出found d
found c
found b
find()永远不匹配第一个字符串(实现find方法的字符串)的第一个字母。
有人可以指出原因吗?我尝试查找许多来源。我是否缺少有关find()的任何内容?
答案 0 :(得分:5)
std::string::find()
返回找到的字符(或字符串)的索引。 'a'
位于索引0,其值为false。因此,行为。您需要更改if
语句来检查返回的索引是否等于std::string::npos
。像这样:
if(str.find(str2[i]) != string::npos)
注意:您不需要包括stdio.h
,因为您没有使用printf
。