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
Next revision Both sides next revision
opis_kontenera:string [2008/12/07 18:21]
mstefanc
opis_kontenera:string [2008/12/11 20:48]
mstefanc
Linia 27: Linia 27:
 const_reverse_iterator rend() const;</​code>​|Zwraca wsteczny iterator wskazujący na miejsce przed pierwszym znakiem | const_reverse_iterator rend() const;</​code>​|Zwraca wsteczny iterator wskazujący na miejsce przed pierwszym znakiem |
 ^Rozmiar^^ ^Rozmiar^^
-|size |Zwraca ilość znaków w napisie | +|<code cpp>​size_t ​size() const;</​code>​|Zwraca ilość znaków w napisie ​(to samo co length())
-|length |Zwraca ilość znaków w napisie | +|<code cpp>​size_t ​length() const;</​code>​|Zwraca ilość znaków w napisie ​(to samo co size())
-|max_size |Zwraca maksymalny dozwolony rozmiar napisu | +|<code cpp>​size_t ​max_size ​( ) const;</​code>​|Zwraca maksymalny dozwolony rozmiar napisu | 
-|resize |Zmienia rozmiar napisu (skraca lub wydłuża) | +|<code cpp>​void ​resize ​( size_t n, char c ); 
-|capacity |Zwraca wielkość aktualnie zarezerwowanej dla napisu pamięci ​ +void resize ( size_t n );</​code>​|Zmienia rozmiar napisu (skraca lub wydłuża). \\ Jeśli podany będzie dodatkowy argument //c//, po wydłużeniu napisu wolne miejsca zostaną wypełnione podanym znakiem. ​
-|reserve |Wymusza zarezerwowanie ustalonej pamięci dla napisu | +|<code cpp>​size_t ​capacity ​( ) const;</​code>​|Zwraca wielkość aktualnie zarezerwowanej dla napisu pamięci. //capacity >= size//. W razie potrzeby dodatkowa pamięć jest alokowana automatycznie. ​
-|clear |Czyści napis | +|<code cpp>​void ​reserve ​( size_t res_arg=0 );</​code>​|Wymusza zarezerwowanie ustalonej pamięci dla napisu. Jeśli podany argument jest mniejszy od aktualnej długości napisu, ilość pamięci jest zmniejszana do wielkości gwarantującej przechowanie dotychczasowego napisu. ​
-|empty |Sprawdza,​ czy napis jest pusty |+|<code cpp>​void ​clear();</​code>​|Czyści napis | 
 +|<code cpp>​bool ​empty ( ) const;</​code>​|Sprawdza, czy napis jest pusty |
 ^Dostęp do znaków^^ ^Dostęp do znaków^^
-|operator[] |Zwraca znak na danej pozycji | +|<code cpp>​const char& ​operator[] ​( size_t pos ) const; 
-|at |Zwraca znak na danej pozycji |+      char& operator[] ( size_t pos );</​code>​|Zwraca znak na pozycji ​//​pos//​. ​
 +|<code cpp>​const char& ​at ( size_t pos ) const; 
 +      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 | |operator+= |Dopisuje znaki na końcu napisu |
-|append |Dopisuje ​znaków ​na końcu napisu |+|append |Dopisuje ​znaki na końcu napisu |
 |push_back |Dodaje znak na koniec napisu | |push_back |Dodaje znak na koniec napisu |
 |assign |Zastępuje dotychczasowy napis nowym | |assign |Zastępuje dotychczasowy napis nowym |
Linia 61: Linia 64:
 |compare |Porównuje dwa stringi | |compare |Porównuje dwa stringi |
  
-===== Podstawowe ​===== +===== Konstruktory ​=====
- +
-=== Konstruktory ​===+
  
 Istnieje kilka metod tworzenia obiektów klasy string. Istnieje kilka metod tworzenia obiektów klasy string.
Linia 98: Linia 99:
 W przeciwnym wypadku argumenty są traktowane jak iteratory i napis jest tworzony przez skopiowanie do stringa wszystkich elementów poczynając od //begin// a kończąc na elemencie poprzedzającym //end//. W przeciwnym wypadku argumenty są traktowane jak iteratory i napis jest tworzony przez skopiowanie do stringa wszystkich elementów poczynając od //begin// a kończąc na elemencie poprzedzającym //end//.
  
-=== operator= ===+===== Przypisanie =====
  
 <code cpp>​string&​ operator= ( const string& str ); <code cpp>​string&​ operator= ( const string& str );
Linia 111: Linia 112:
 W każdym przypadku zwracaną wartością jest //*this//. W każdym przypadku zwracaną wartością jest //*this//.
  
-===== Iteratory ​=====+===== Modyfikacja ​=====
  
-=== begin ===+=== operator += ==
 +<code cpp>​string&​ operator+= ( const string& str ); 
 +string& operator+= ( const char* s ); 
 +string& operator+= ( char c );</​code>​
  
-<code cpp> ​     iterator begin(); +Dopisuje na końcu napisu kopię danych podaną jako argument.
-const_iterator begin() const;</​code>​+
  
-Zwraca iterator wskazujący pierwszy znak napisu.+Rozszerzoną funkcjonalność oferuje funkcja append.
  
-=== end ===+=== append ​===
  
-<code cpp> ​     ​iterator end()+<code cpp>string& append ​const string& str );</​code>​
-const_iterator end() const;</​code>​+
  
-Zwraca iterator wskazujący ​na miejsce za ostatnim znakiem.+Dopisuje ​na końcu napisu kopię podanego argumentu.
  
-=== rbegin ===+<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> ​     ​reverse_iterator rbegin()+<code cpp>string& append ​const char * s, size_t n );</​code>​ 
-const_reverse_iterator rbegin() const;</​code>​+Dopisuje na końcu pierwsze //n// znaków z tablicy wskazywanej przez //s//.
  
-Zwraca wsteczny iterator wskazujący na ostatni znak napisu ​+<code cpp>​string&​ append ( const char * s );</​code>​
  
-=== rend ===+Dopisuje na końcu napis wskazywany przez s, kończący się znakiem '​\0'​.
  
-<code cpp> ​     ​reverse_iterator rend()+<code cpp>string& append ​size_t n, char c );</​code>​
-const_reverse_iterator rend() const;</​code>​+
  
-Zwraca wsteczny iterator wskazujący ​na miejsce przed pierwszym znakiem+Dopisuje ​na końcu //n// razy znak //c//.
  
-===== Rozmiar =====+<code cpp>​template<​class InputIterator>​ string& append (InputIterator first, InputIterator last);</​code>​
  
-===== Dostęp do znaków =====+Dopisuje na końcu wszystie znaki zaczynając od wskazywanego przez //first// a kończąc na znaku poprzedzającym //last//.
  
-===== Modyfikacja ​=====+=== 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//.
  
 ===== 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 |
opis_kontenera/string.txt · ostatnio zmienione: 2008/12/11 21:55 przez mstefanc