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

时间:2019-03-10 05:55:16

标签: c++ string

我正在实现一个非常简单的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()的任何内容?

1 个答案:

答案 0 :(得分:5)

std::string::find()返回找到的字符(或字符串)的索引。 'a'位于索引0,其值为false。因此,行为。您需要更改if语句来检查返回的索引是否等于std::string::npos。像这样:

if(str.find(str2[i]) != string::npos)

注意:您不需要包括stdio.h,因为您没有使用printf