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