web-dev-qa-db-fra.com

Comment faire std :: string indexof en C ++ qui retourne l'index de la chaîne correspondante?

Je recherche une fonction d'index de chaîne dans l'espace de noms std qui renvoie un entier d'une chaîne correspondante similaire à la fonction Java du même nom. Quelque chose comme:

std::string Word = "bob";
int matchIndex = getAString().indexOf( Word );

où getAString () est défini comme ceci:

std::string getAString() { ... }
19
Alex B

Essayez la fonction find .

Voici l'exemple de l'article que j'ai lié:

 string str1( "Alpha Beta Gamma Delta" );
 string::size_type loc = str1.find( "Omega", 0 );
 if( loc != string::npos ) {
   cout << "Found Omega at " << loc << endl;
 } else {
   cout << "Didn't find Omega" << endl;
 }
29
Andrew Hare

D'après votre exemple, la chaîne dans laquelle vous recherchez "bob" n'est pas claire, mais voici comment rechercher une sous-chaîne en C++ à l'aide de find .

string str1( "Alpha Beta Gamma Delta" );
string::size_type loc = str1.find( "Omega", 0 );

if( loc != string::npos )
{
   cout << "Found Omega at " << loc << endl;
}
else
{
   cout << "Didn't find Omega" << endl;
}
6
Bill the Lizard

Vous recherchez le std::basic_string<> modèle de fonction:

size_type find(const basic_string& s, size_type pos = 0) const;

Cela renvoie l'index ou std::string::npos si la chaîne n'est pas trouvée.

4
dirkgently

Je ne sais pas exactement ce que signifie votre exemple, mais pour la classe de chaîne stl, regardez dans find et rfind

1
Perchik