我正在实现一个非常简单的C 代码,以查找方法。第二个字符串中的字母应存在于第一个字符串中:
#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()?
std::string::find()
返回找到的字符(或字符串)的索引。'a'
位于索引0,评估为false。因此行为。您需要更改if
语句以检查返回的索引是否等于std::string::npos
。这样的东西:
if(str.find(str2[i]) != string::npos)
注意:您不需要包含stdio.h
,因为您不使用printf
s。