Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Hasło nie zostało zweryfikowane
Niniejsze hasło zostało opracowane, jednak nie zostało ono zweryfikowane przez administrację serwisu. Jeżeli znalazłeś błędy merytoryczne w niniejszym dokumencie, prosimy o ich zgłoszenie na forum w dziale Znalezione błędy.
Opracował: Mrovqa
Język C++

basic_string::find

[metoda] Wyszukuje pierwszego wystąpienia danego łańcucha znaków.

Składnia

C/C++
#include <string>

namespace std
{
    template <
    class TypZnaku,
    class CechowanieZnakow = char_traits < TypZnaku >,
    class Alokator = allocator < TypZnaku >
    >
    class basic_string
    {
    private:
        typedef basic_string < TypZnaku, CechowanieZnakow, Alokator > UtworzonaKlasaT;
    public:
        size_type find( const UtworzonaKlasaT & _str, size_type _pos = 0 ) const noexcept; //(1)
       
        size_type find( const TypZnaku * _s, size_type _pos = 0 ) const; //(2)
       
        size_type find( const TypZnaku * _s, size_type _pos, size_type _n ) const; //(3)
       
        size_type find( TypZnaku _c, size_type _pos = 0 ) const noexcept; //(4)
       
    }; //class basic_string
} //namespace std

Argumenty

ArgumentOpis
_strInny obiekt tego samego typu co aktualny (z uwzględnieniem parametrów szablonu!), który będzie wzorcem wyszukiwania.
_posPozycja znaku w aktualnym obiekcie, od którego ma rozpocząć się wyszukiwanie.
_sWskaźnik na tablicę znaków. Jeżeli argument _n jest określony, to oznacza on długość wzorca. W przeciwnym wypadku owa długość jest zdeterminowana przez bajt zerowy.
_nDługość wzorca.
_cPojedynczy znak do wyszukania.

Zwracana wartość

Pozycja pierwszego dopasowania wzorca. Jeżeli owy nie został znaleziony, funkcja zwróci » standard C++ » basic_stringnpos.

Opis szczegółowy

Metoda (1) wyszukuje pierwsze wystąpienie wzorca określonego innym obiektem tego samego typu od pozycji _pos w aktualnym obiekcie. Wersja (2) czyni dokładnie to samo, z tą różnicą, iż wzorzec jest określony poprzez wskaźnik do tablicy znaków. Metoda (3) jest rozszerzoną metodą (2) o możliwość podania długości wzorca. Ostatnia wersja (4) wyszukuje pojedynczy znak w aktualnym obiekcie.

Rzucane wyjątki

Jeżeli _s nie wskazuje na wystarczająco dużą tablicę (_n jest za duże), to zachowanie jest niezdefiniowane.

Przykład

C/C++
#include <iostream>
#include <string>

int main()
{
    MojString str( "Na stole ziemniak jeden, a pod stolem ziemniakow para." );
    MojString str2( "ziemniak" );
   
    MojString::size_type found = str.find( str2 );
    if( found != MojString::npos )
         std::cout << "pierwszy 'ziemniak' znaleziony na pozycji: " << found << '\n';
   
    found = str.find( "ziemniaki sa male", found + 1, 7 );
    if( found != MojString::npos )
         std::cout << "drugi 'ziemniak' znaleziony na pozycji: " << found << '\n';
   
    found = str.find( "stol" );
    if( found != MojString::npos )
         std::cout << "znaleziono takze 'stol' na pozycji: " << found << '\n';
   
    found = str.find( '.' );
    if( found != MojString::npos )
         std::cout << "Kropka na pozycji: " << found << '\n';
   
    return 0;
}
Standardowe wyjście programu:
pierwszy 'ziemniak' znaleziony na pozycji: 9
drugi 'ziemniak' znaleziony na pozycji: 38
znaleziono takze 'stol' na pozycji: 3
Kropka na pozycji: 53

Zagadnienia powiązane

rfindWyszukuje ostatniego wystąpienia danego łańcucha znaków. (metoda)
find_first_not_ofWyszukuje pierwsze wystąpienia znaku spoza danej bazy znaków. (metoda)
find_first_ofWyszukuje pierwsze wystąpienie znaku z danej bazy znaków. (metoda)
find_last_not_ofWyszukuje ostatnie wystąpienie znaku spoza danej bazy znaków. (metoda)
find_last_ofWyszukuje ostatnie wystąpienie znaku z danej bazy znaków. (metoda)
replaceZamienia część znaków na inne. (metoda)
substrZwraca podciąg łańcucha znaków. (metoda)

Linki zewnętrzne