Narzędzia użytkownika

Narzędzia witryny


opis_kontenera:string

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision
Previous revision
opis_kontenera:string [2008/12/11 21:11]
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 43: Linia 43:
 ^Modyfikacja^^ ^Modyfikacja^^
 |[[string#​operator+=]] |Dopisuje znaki na końcu napisu | |[[string#​operator+=]] |Dopisuje znaki na końcu napisu |
-|append |Dopisuje znaki na końcu napisu |+|[[string#append]] |Dopisuje znaki na końcu napisu |
 |<code cpp>void push_back ( char c );</​code>​|Dodaje znak //c// na koniec napisu | |<code cpp>void push_back ( char c );</​code>​|Dodaje znak //c// na koniec napisu |
-|assign |Zastępuje dotychczasowy napis nowym | +|[[string#assign]] |Zastępuje dotychczasowy napis nowym | 
-|insert |Wstawia dodatkowe znaki do napisu | +|[[string#insert]] |Wstawia dodatkowe znaki do napisu | 
-|erase |Usuwa znaki z napisu | +|[[string#erase]] |Usuwa znaki z napisu | 
-|replace |Zmienia część napisu |+|[[string#replace]] |Zmienia część napisu |
 |<code cpp>​size_t copy ( char* s, size_t n, size_t pos = 0) const;</​code>​ |Kopiuje do tablicy //s// //n// znaków zaczynając od pozycji //pos//. Nie jest dopisywany znak '​\0'​. Odpowiednia ilość pamięci dla //s// powinna być przydzielona przed wywołaniem funkcji. | |<code cpp>​size_t copy ( char* s, size_t n, size_t pos = 0) const;</​code>​ |Kopiuje do tablicy //s// //n// znaków zaczynając od pozycji //pos//. Nie jest dopisywany znak '​\0'​. Odpowiednia ilość pamięci dla //s// powinna być przydzielona przed wywołaniem funkcji. |
 |<code cpp>void swap ( string& str );</​code>​ |Zamienia zawartość aktualnego napisu z napisem //str//. | |<code cpp>void swap ( string& str );</​code>​ |Zamienia zawartość aktualnego napisu z napisem //str//. |
Linia 54: Linia 54:
 |<code cpp>​const char* c_str ( ) const;</​code>​ |Zwraca wskaźnik na tablicę znaków zakończoną zerem reprezentującą zawartość napisu. | |<code cpp>​const char* c_str ( ) const;</​code>​ |Zwraca wskaźnik na tablicę znaków zakończoną zerem reprezentującą zawartość napisu. |
 |<code cpp>​const char* data ( ) const;</​code>​ |Zwraca wskaźnik na wewnętrzną tablicę przechowującą znaki napisu. Łańsuch nie zawiera kończącego zera. | |<code cpp>​const char* data ( ) const;</​code>​ |Zwraca wskaźnik na wewnętrzną tablicę przechowującą znaki napisu. Łańsuch nie zawiera kończącego zera. |
-|find |Wyszukuje pierwsze wystąpienie znaku/​ciągu w napisie | +|[[string#find]] |Wyszukuje pierwsze wystąpienie znaku/​ciągu w napisie | 
-|rfind |Wyszukuje ostatnie wystąpienie znaku/​ciągu w napisie | +|[[string#​find|rfind]] |Wyszukuje ostatnie wystąpienie znaku/​ciągu w napisie | 
-|find_first_of |Wyszukuje pierwsze wystąpienie jednego z podanych znaków | +|[[string#​find|find_first_of]] |Wyszukuje pierwsze wystąpienie jednego z podanych znaków | 
-|find_last_of |Wyszukuje ostatnie wystąpienie jednego z podanych znaków | +|[[string#​find|find_last_of]] |Wyszukuje ostatnie wystąpienie jednego z podanych znaków | 
-|find_first_not_of |Wyszukuje pierwsze wystąpienie znaku nie podanego jako argument | +|[[string#​find|find_first_not_of]] |Wyszukuje pierwsze wystąpienie znaku nie podanego jako argument | 
-|find_last_not_of |Wyszukuje ostatnie wystąpienie znaku nie podanego jako argument |+|[[string#​find|find_last_not_of]] |Wyszukuje ostatnie wystąpienie znaku nie podanego jako argument |
 |<​code>​string substr ( size_t pos = 0, size_t n = npos ) const;</​code>​ |Zwraca podciąg aktualnego napisu zaczynający się na pozycji //pos// i składający się maksymalnie z //n// znaków | |<​code>​string substr ( size_t pos = 0, size_t n = npos ) const;</​code>​ |Zwraca podciąg aktualnego napisu zaczynający się na pozycji //pos// i składający się maksymalnie z //n// znaków |
-|compare |Porównuje dwa stringi |+|[[string#compare]] |Porównuje dwa stringi |
  
 ===== Konstruktory ===== ===== Konstruktory =====
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//
opis_kontenera/string.1229026276.txt.gz · ostatnio zmienione: 2008/12/11 21:11 przez mstefanc