Как сделать std :: string indexof в C ++, который возвращает индекс совпадающей строки? - PullRequest
19 голосов
/ 16 марта 2009

Я ищу строковую функцию indexof из пространства имен std, которая возвращает целое число совпадающей строки, подобное функции java с тем же именем. Что-то вроде:

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

где getAString () определяется следующим образом:

std::string getAString() { ... }

Ответы [ 4 ]

29 голосов
/ 16 марта 2009

Попробуйте функцию 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 голосов
/ 16 марта 2009

Из вашего примера не ясно, в какой строке вы ищете "bob", но вот как искать подстроку в C ++, используя 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;
}
4 голосов
/ 16 марта 2009

Вы ищете шаблон функции std::basic_string<>:

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

Возвращает индекс или std::string::npos, если строка не найдена.

1 голос
/ 16 марта 2009

Я не совсем уверен, что означает ваш пример, но для класса строки stl посмотрите find и rfind

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...