Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
opis_kontenera:string [2008/12/07 18:39] mstefanc |
opis_kontenera:string [2008/12/11 21:13] mstefanc |
||
---|---|---|---|
Linia 42: | Linia 42: | ||
char& at ( size_t pos );</code>|Zwraca znak na pozycji //pos//. Działa podobnie do operatora [], z tym że funkcja at() wykonuje sprawdzenie zakresu i w wypadku jego przekroczenia rzuca wyjątek //out_of_range//.| | char& at ( size_t pos );</code>|Zwraca znak na pozycji //pos//. Działa podobnie do operatora [], z tym że funkcja at() wykonuje sprawdzenie zakresu i w wypadku jego przekroczenia rzuca wyjątek //out_of_range//.| | ||
^Modyfikacja^^ | ^Modyfikacja^^ | ||
- | |operator+= |Dopisuje znaki na końcu napisu | | + | |[[string#operator+=]] |Dopisuje znaki na końcu napisu | |
- | |append |Dopisuje znaków na końcu napisu | | + | |[[string#append]] |Dopisuje znaki na końcu napisu | |
- | |push_back |Dodaje znak 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 | |
- | |copy |Kopiuje fragment 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. | |
- | |swap |Zamienia zawartość dwóch stringów między sobą | | + | |<code cpp>void swap ( string& str );</code> |Zamienia zawartość aktualnego napisu z napisem //str//. | |
^Operacje dodatkowe^^ | ^Operacje dodatkowe^^ | ||
- | |c_str |Zwraca wskaźnik na tablicę znaków zakończoną zerem | | + | |<code cpp>const char* c_str ( ) const;</code> |Zwraca wskaźnik na tablicę znaków zakończoną zerem reprezentującą zawartość napisu. | |
- | |data |Zwraca wskaźnik na wewnętrzną tablicę przechowującą znaki 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. | |
- | |get_allocator | | | + | |[[string#find]] |Wyszukuje pierwsze wystąpienie znaku/ciągu w napisie | |
- | |find |Wyszukuje pierwsze wystąpienie znaku/ciągu w napisie | | + | |[[string#find|rfind]] |Wyszukuje ostatnie wystąpienie znaku/ciągu w napisie | |
- | |rfind |Wyszukuje ostatnie wystąpienie znaku/ciągu w napisie | | + | |[[string#find|find_first_of]] |Wyszukuje pierwsze wystąpienie jednego z podanych znaków | |
- | |find_first_of |Wyszukuje pierwsze wystąpienie jednego z podanych znaków | | + | |[[string#find|find_last_of]] |Wyszukuje ostatnie wystąpienie jednego z podanych znaków | |
- | |find_last_of |Wyszukuje ostatnie wystąpienie jednego z podanych znaków | | + | |[[string#find|find_first_not_of]] |Wyszukuje pierwsze wystąpienie znaku nie podanego jako argument | |
- | |find_first_not_of |Wyszukuje pierwsze wystąpienie znaku nie podanego jako argument | | + | |[[string#find|find_last_not_of]] |Wyszukuje ostatnie wystąpienie znaku nie podanego jako argument | |
- | |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 | |
- | |substr |Zwraca podciąg aktualnego napisu | | + | |[[string#compare]] |Porównuje dwa stringi | |
- | |compare |Porównuje dwa stringi | | + | |
===== Konstruktory ===== | ===== Konstruktory ===== | ||
Linia 113: | Linia 112: | ||
===== Modyfikacja ===== | ===== Modyfikacja ===== | ||
+ | |||
+ | === operator += === | ||
+ | <code cpp>string& operator+= ( const string& str ); | ||
+ | string& operator+= ( const char* s ); | ||
+ | string& operator+= ( char c );</code> | ||
+ | |||
+ | Dopisuje na końcu napisu kopię danych podaną jako argument. | ||
+ | |||
+ | Rozszerzoną funkcjonalność oferuje funkcja append. | ||
+ | |||
+ | === append === | ||
+ | |||
+ | <code cpp>string& append ( const string& str );</code> | ||
+ | |||
+ | Dopisuje na końcu napisu kopię podanego argumentu. | ||
+ | |||
+ | <code cpp>string& append ( const string& str, size_t pos, size_t n );</code> | ||
+ | Dopisuje na końcu podciąg podanego argumentu zaczynający się na pozycji //pos// i składający się z //n// znaków (bądź mniej, jeśli napis się skończy wcześniej). Jeśli //pos// jest większy niż długość napisu zgłaszany jest wyjątek //out_of_range// | ||
+ | |||
+ | <code cpp>string& append ( const char * s, size_t n );</code> | ||
+ | Dopisuje na końcu pierwsze //n// znaków z tablicy wskazywanej przez //s//. | ||
+ | |||
+ | <code cpp>string& append ( const char * s );</code> | ||
+ | |||
+ | Dopisuje na końcu napis wskazywany przez s, kończący się znakiem '\0'. | ||
+ | |||
+ | <code cpp>string& append ( size_t n, char c );</code> | ||
+ | |||
+ | Dopisuje na końcu //n// razy znak //c//. | ||
+ | |||
+ | <code cpp>template<class InputIterator> string& append (InputIterator first, InputIterator last);</code> | ||
+ | |||
+ | Dopisuje na końcu wszystie znaki zaczynając od wskazywanego przez //first// a kończąc na znaku poprzedzającym //last//. | ||
+ | |||
+ | === assign === | ||
+ | |||
+ | <code cpp>string& assign ( const string& str ); | ||
+ | string& assign ( const string& str, size_t pos, size_t n ); | ||
+ | string& assign ( const char* s, size_t n ); | ||
+ | string& assign ( const char* s ); | ||
+ | string& assign ( size_t n, char c ); | ||
+ | template <class InputIterator> | ||
+ | string& assign ( InputIterator first, InputIterator last );</code> | ||
+ | |||
+ | Działanie assign polega na przypisaniu do napisu zawartości podanej jako argument. Argumenty interpretowane są identycznie jak w funkcji append. | ||
+ | |||
+ | === insert === | ||
+ | |||
+ | <code cpp>string& insert ( size_t pos1, const string& str ); | ||
+ | Wstawia cały napis //str// na pozycji //pos1//. | ||
+ | |||
+ | <code cpp>string& insert ( size_t pos1, const string& str, size_t pos2, size_t n );</code> | ||
+ | Wstawia do napisu na pozycji //pos1// podciąg napisu //str// zaczynający się na pozycji //pos2// i zawierający do //n// znaków. | ||
+ | |||
+ | <code cpp>string& insert ( size_t pos1, const char * s, size_t n );</code> | ||
+ | Wstawia na pozycji //pos1// pierwsze //n// znaków z tablicy //s//. | ||
+ | |||
+ | <code cpp>string& insert ( size_t pos1, const char * s );</code> | ||
+ | Wstawia na pozycji //pos1// cały napis wskazywany przez //s// (napis musi być zakończony znakiem '\0'). | ||
+ | |||
+ | <code cpp>string& insert ( size_t pos1, size_t n, char c );</code> | ||
+ | Wstawia na pozycji //pos1// //n// znaków //c//. | ||
+ | |||
+ | <code cpp>iterator insert ( iterator p, char c );</code> | ||
+ | Wstawia na pozycji wskazywanej przez iterator //p// znak //c//. Zwracany jest iterator na wstawiony znak. | ||
+ | |||
+ | <code cpp>void insert ( iterator p, size_t n, char c );</code> | ||
+ | Wstawia na pozycji wskazywanej przez iterator //p// //n// znaków //c//. | ||
+ | |||
+ | <code cpp>template<class InputIterator> void insert (iterator p, InputIterator first, InputIterator last);</code> | ||
+ | Wstawia na pozycji wskazywanej przez iterator //p// wszystkie znaki zaczynając od wskazywanego przez //first//, kończąc na znaku poprzedzającym //last//. | ||
+ | |||
+ | === erase === | ||
+ | |||
+ | <code cpp>string& erase ( size_t pos = 0, size_t n = npos );</code> | ||
+ | Usuwa z napisu //n// znaków zaczynając od tego na pozycji //pos//. Jeśli //n// większe od długości napisu, usuwane są znaki do końca napisu. | ||
+ | |||
+ | <code cpp>iterator erase ( iterator p );</code> | ||
+ | Usuwa jeden znak, wskazywany przez iterator //p//. | ||
+ | |||
+ | <code cpp>iterator erase ( iterator first, iterator last );</code> | ||
+ | Usuwa znaki zaczynając od tego wskazywanego przez //first// a kończac na poprzedzającym //last//. | ||
+ | |||
+ | === replace === | ||
+ | |||
+ | Zamienia część napisu na inną, podaną jako argument. Większość funkcji występuje w dwóch wersjach - pierwsza z nich określa fragment napisu do zmiany poprzez podanie pozycji pierwszego znaku //pos1// oraz długości //n1//, druga określa go poprzez podanie iteratorów //i1// i //i2//. | ||
+ | |||
+ | <code cpp>string& replace ( size_t pos1, size_t n1, const string& str ); | ||
+ | string& replace ( iterator i1, iterator i2, const string& str );</code> | ||
+ | Wybrany fragment jest zamieniany na cały napis //str//. | ||
+ | |||
+ | <code cpp>string& replace ( size_t pos1, size_t n1, const string& str, size_t pos2, size_t n2 );</code> | ||
+ | Wybrany fragment jest zamieniany na podciąg napisu //str// zaczynający się na pozycji //pos2// i zawierający do //n2// znaków. | ||
+ | |||
+ | <code cpp>string& replace ( size_t pos1, size_t n1, const char * s, size_t n2 ); | ||
+ | string& replace ( iterator i1, iterator i2, const char * s, size_t n2 );</code> | ||
+ | Wybrany fragment jest zamieniany na pierwsze //n2// znaków z tablicy //s//. | ||
+ | |||
+ | <code cpp>string& replace ( size_t pos1, size_t n1, const char * s ); | ||
+ | string& replace ( iterator i1, iterator i2, const char * s );</code> | ||
+ | Wybrany fragment jest zamieniany na napis wskazywany przez //s// (zakończony znakiem '\0'). | ||
+ | |||
+ | <code cpp>string& replace ( size_t pos1, size_t n1, size_t n2, char c ); | ||
+ | string& replace ( iterator i1, iterator i2, size_t n2, char c );</code> | ||
+ | Wybrany fragment jest zamieniany na //n2// wystąpień znaku //c//. | ||
+ | |||
+ | <code cpp>template<class InputIterator> string& replace (iterator i1, iterator i2, InputIterator j1, InputIterator j2);</code> | ||
+ | Wybrany fragment jest zamieniany na znaki znajdujące się pomiedzy iteratorami //j1// i //j2//. | ||
===== Operacje dodatkowe ===== | ===== Operacje dodatkowe ===== | ||
+ | ===== Porównanie operacji na napisach w C i C++ ===== | ||
+ | |||
+ | ^ operacja ^ C ^ C++ ^ | ||
+ | | Porównanie zawartości | strcmp(s1, s2) | s1 == s2 (!=, <, > etc) / s1.compare(s2, ...) | | ||
+ | | Dopisanie na koniec | strcat(s1, "...") | s1 += "..." / s1.append("...", ...) | | ||
+ | | Kopiowanie zawartości | strcpy(s1, s2) | s1 = s2 / s1.assign(s2) | | ||
+ | | Długość | strlen(s1) | s1.size() | | ||
+ | | Wyszukiwanie napisu | strstr(s1, "napis") | s1.find("napis")| | ||
+ | | Wyszukiwanie jednego ze znaków | strspn(s1, "abc") | s1.find_first_of("abc") | | ||
+ | | Podział na podnapisy | strtok(s1, " ") | brak | |