Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision | ||
opis_kontenera:string [2008/12/11 21:13] mstefanc |
opis_kontenera:string [2008/12/11 21:55] (aktualna) mstefanc |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
====== String ====== | ====== String ====== | ||
- | //Autor: Maciej Stefańczyk// | + | |
Klasa **string** jest kontenerem przeznaczonym do przechowywania łańcuchów znaków. Stanowi pewnego rodzaju opakowanie dla tablic znaków znanych z C, zawiera także wiele funkcji przydatnych do operowania na napisach. Przy programowaniu obiektowym klasa **string** zastępuje używanie tabic znaków i biblioteki cstring. | Klasa **string** jest kontenerem przeznaczonym do przechowywania łańcuchów znaków. Stanowi pewnego rodzaju opakowanie dla tablic znaków znanych z C, zawiera także wiele funkcji przydatnych do operowania na napisach. Przy programowaniu obiektowym klasa **string** zastępuje używanie tabic znaków i biblioteki cstring. | ||
Linia 222: | Linia 222: | ||
===== Operacje dodatkowe ===== | ===== Operacje dodatkowe ===== | ||
+ | |||
+ | === find === | ||
+ | |||
+ | Do wyszukiwania podciągów w napisie służą dwie grupy funkcji. Pierwsza z nich wyszukuje cały napis podany jako argument, druga służy do wyszukiwania wystąpień dowolnego znaku z podanego napisu. | ||
+ | |||
+ | <code cpp>size_t find ( const string& str, size_t pos = 0 ) const; | ||
+ | size_t find ( const char* s, size_t pos, size_t n ) const; | ||
+ | size_t find ( const char* s, size_t pos = 0 ) const; | ||
+ | size_t find ( char c, size_t pos = 0 ) const;</code> | ||
+ | |||
+ | Wyszukaj pierwsze wystąpienie podanego ciągu w napisie. W czasie wyszukiwania w bieżącym napisie brane pod uwagę są tylko znaki od pozycji //pos//. Jeśli został użyty parametr //n//, oznacza on liczbę znaków w tablicy wskazywanej przez //s//, w przeciwnym wypadku //s// powinno wskazywać na napis zakończony zerem. | ||
+ | |||
+ | W celu wyszukania ostatniego wystąpienia danego ciągu należy użyć funkcji rfind o identycznej składni. | ||
+ | |||
+ | <code cpp>size_t find_first_of ( const string& str, size_t pos = 0 ) const; | ||
+ | size_t find_first_of ( const char* s, size_t pos, size_t n ) const; | ||
+ | size_t find_first_of ( const char* s, size_t pos = 0 ) const; | ||
+ | size_t find_first_of ( char c, size_t pos = 0 ) const;</code> | ||
+ | |||
+ | Wyszukaj pierwsze wystąpienie dowolnego znaku znajdującego się w podanym ciągu. Parametry mają takie samo znaczenie jak przy funkcji //find//. | ||
+ | |||
+ | Pozostałe 3 wersje tej funkcji to: | ||
+ | * find_last_of - wyszukuje ostatnie wystąpienie dowolnego znaku z podanego ciągu | ||
+ | * find_first_not_of - wyszukuje pierwszy znak nie będący fragmentem podanego ciągu | ||
+ | * find_last_not_of - jw, z tym że wyszukuje ostatni taki znak | ||
+ | |||
+ | |||
+ | === compare === | ||
+ | |||
+ | <code cpp>int compare ( const string& str ) const;</code> | ||
+ | <code cpp>int compare ( const char* s ) const;</code> | ||
+ | |||
+ | Porównuje cały napis z podanym argumentem. Równoważne z | ||
+ | <code cpp>*this == str; | ||
+ | *this == s;</code> | ||
+ | |||
+ | |||
+ | <code cpp>int compare ( size_t pos1, size_t n1, const string& str ) const; | ||
+ | int compare ( size_t pos1, size_t n1, const char* s) const;</code> | ||
+ | |||
+ | Porównuje napis podany jako argument z podciągiem aktualnego napisu złożonego z //n1// znaków zaczynającym się na pozycji //pos1//. Równowazne z | ||
+ | <code cpp>(*this).substr(pos1, n1) == str; | ||
+ | (*this).substr(pos1, n1) == s;</code> | ||
+ | |||
+ | <code cpp>int compare ( size_t pos1, size_t n1, const string& str, size_t pos2, size_t n2 ) const;</code> | ||
+ | |||
+ | Porównuje fragment napisu podanego jako argument z podciągiem aktualnego napisu złożonego z //n1// znaków zaczynającym się na pozycji //pos1//. Równowazne z | ||
+ | <code cpp>(*this).substr(pos1, n1) == str.substr(pos2, n2);</code> | ||
+ | |||
+ | <code cpp>int compare ( size_t pos1, size_t n1, const char* s, size_t n2) const;</code> | ||
+ | Porównuje //n2// pierwszych znaków z tablicy //s// z podciągiem aktualnego napisu złożonego z //n1// znaków zaczynającym się na pozycji //pos1//. | ||
===== Porównanie operacji na napisach w C i C++ ===== | ===== Porównanie operacji na napisach w C i C++ ===== | ||
Linia 233: | Linia 284: | ||
| Wyszukiwanie jednego ze znaków | strspn(s1, "abc") | s1.find_first_of("abc") | | | Wyszukiwanie jednego ze znaków | strspn(s1, "abc") | s1.find_first_of("abc") | | ||
| Podział na podnapisy | strtok(s1, " ") | brak | | | Podział na podnapisy | strtok(s1, " ") | brak | | ||
+ | |||
+ | ===== Odnośniki ===== | ||
+ | |||
+ | [[http://www.cplusplus.com/reference/string/string/|C++ Reference]] \\ | ||
+ | [[http://pl.wikibooks.org/wiki/C%2B%2B:String|Wikibooks, biblioteka wolnych podręczników]] \\ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | --- //[[maciek.slon@gmail.com|Maciej Stefańczyk]] 2008/12/11 21:52// |