字符串查找方法找不到第一字母

string find method does not find first letter

本文关键字:一字 查找 方法 找不到 字符串      更新时间:2023-10-16

我正在实现一个非常简单的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,因为您不使用printfs。