2009-03-16 1 views
15

Я ищу функцию индекса строки из пространства имен std, которое возвращает целое число соответствующей строки, аналогичную функции java с тем же именем. Что-то вроде:Как сделать std :: string indexof в C++, который возвращает индекс соответствующей строки?

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

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

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

ответ

25

Попробуйте функцию 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; 
} 
+0

Есть ли функция для фактического нахождения _index_, с которой начинается подстрока? Я мог бы вычесть начальный итератор, но это необходимо? –

4

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

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

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

1

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

5

Это не ясно из вашего примера, что строки вы ищете «боб» в, но вот как искать подстроку в 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; 
}