Corda find s'utilitza per trobar la primera ocurrència d'una subcadena a la cadena especificada que s'està cridant. Retorna l'índex de la primera ocurrència de la subcadena a la cadena des de la posició inicial donada. El valor per defecte de la posició inicial és 0.
És una funció membre de std::string classe.
Sintaxi:
size_t find (const string& str, size_t pos = 0); // for C++ Style Strings or size_t find (const char* s, size_t pos = 0); // for C-Style Strings>
Paràmetres:
- str : la subcadena que s'ha de cercar. s : la subcadena que s'ha de cercar, donada com a cadena d'estil C. pos : la posició inicial des d'on començarà la cerca de cadena.
Valor de retorn:
- La funció retorna l'índex de la primera ocurrència de la subcadena.
- Si no es troba la subcadena, retorna string::npos(string::pos és un membre estàtic amb el seu valor com el més alt possible per al tipus de dades size_t).
Anàlisi de complexitat:
- Complexitat temporal: O(N*M), on N és la mida de la cadena (str) i M és la mida de la subcadena a cercar. Espai auxiliar: O(1)
Exemple:
C++
// C++ program to demonstrate> // working of string.find()> #include> #include> using> namespace> std;> // Driver code> int> main()> {> >string str =>'geeksforgeeks a computer science'>;> >string str1 =>'geeks'>;> > >// Find first occurrence of 'geeks'> >size_t> found = str.find(str1);> >if> (found != string::npos)> >cout <<>'First occurrence is '> <<> >found << endl;> > >// Find next occurrence of 'geeks'.> >// Note here we pass> >// 'geeks' as C style string.> >char> arr[] =>'geeks'>;> >found = str.find(arr, found+1);> >if> (found != string::npos)> >cout <<>'Next occurrence is '> <<> >found << endl;> >return> 0;> }> |
>
>Sortida
First occurrence is 0 Next occurrence is 8>
Busca l'aparició d'un personatge
També podem utilitzar la funció de cerca per trobar l'aparició d'un sol caràcter a la cadena.
Sintaxi:
size_t find (const char c, size_t pos = 0);>
Aquí, c és el personatge a buscar.
alfabet per nombres
Exemple:
C++
// C++ program to demonstrate> // working of string find> // to find occurrence of> // a character> #include> #include> using> namespace> std;> // Driver code> int> main()> {> >string str =>'geeksforgeeks a computer science'>;> >char> c =>'g'>;> >// Find first occurrence of 'g'> >size_t> found = str.find(c);> >if> (found != string::npos)> >cout <<>'First occurrence is '> <<> >found << endl;> > >// Find next occurrence of 'g'> >found = str.find(c, found + 1);> >if> (found != string::npos)> >cout <<>'Next occurrence is '> <<> >found << endl;> >return> 0;> }> |
>
>Sortida
First occurrence is 0 Next occurrence is 8>
Cerca una cadena parcial
També podem cercar una part de la cadena donada.
Sintaxi:
size_t find (const char *str, size_t pos, size_t n);>
Aquí, n és el nombre de caràcters a coincidir.
Exemple:
C++
tercera forma normal
// C++ program to demonstrate> // working of string find to> // search a string> #include> #include> using> namespace> std;> // Driver code> int> main()> {> >string str =>'geeksforgeeks a computer science'>;> > >// Only search first 5 characters> >// of 'geeks.practice'> >size_t> found = str.find(>'geeks.practice'>,> >0, 5);> >if> (found != string::npos)> >cout << found << endl;> >return> 0;> }> |
>
>Sortida
0>