logo

znalezienie ciągu znaków w C++

Strunowy find służy do znalezienia pierwszego wystąpienia podciągu w określonym ciągu, który jest wywoływany. Zwraca indeks pierwszego wystąpienia podciągu w ciągu znaków od podanej pozycji początkowej. Domyślna wartość pozycji początkowej to 0.

Jest to funkcja członkowska std::string klasa.



Składnia:

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>

Parametry:

    str : Podciąg do przeszukania. s : Podciąg do przeszukania, podany jako ciąg w stylu C. pos : Początkowa pozycja, od której ma się rozpocząć wyszukiwanie ciągu.

Wartość zwracana:



  • Funkcja zwraca indeks pierwszego wystąpienia podciągu.
  • Jeśli podciąg nie zostanie znaleziony, zwraca ciąg::npos(string::pos jest elementem statycznym o wartości największej możliwej dla typu danych size_t).

Analiza złożoności:

    Złożoność czasowa: O(N*M), gdzie N jest rozmiarem ciągu (str), a M jest rozmiarem podciągu do przeszukania. Przestrzeń pomocnicza: O(1)

Przykład:

C++




usuwanie z arraylisty



wewnętrzne przechodzenie drzewa binarnego
// 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;> }>

>

>

Wyjście

First occurrence is 0 Next occurrence is 8>

Znajdź wystąpienie znaku

Możemy użyć funkcji find, aby znaleźć wystąpienie pojedynczego znaku w ciągu.

Składnia:

size_t find (const char c, size_t pos = 0);>

Tutaj, C to znak do przeszukania.

Przykład:

C++




kolejność sql według daty
// 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;> }>

>

>

Wyjście

Iterator Java dla mapy
First occurrence is 0 Next occurrence is 8>

Wyszukaj częściowy ciąg

Możemy także wyszukać część podanego ciągu.

Składnia:

size_t find (const char *str, size_t pos, size_t n);>

Tutaj, N to liczba pasujących znaków.

Przykład:

C++




skaner java

// 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;> }>

>

>

Wyjście

0>