Składnia
#include <string>
namespace std
{
template <
class TypZnaku,
class CechowanieZnakow = char_traits < TypZnaku >,
class Alokator = allocator < TypZnaku >
>
class basic_string
{
private:
typedef basic_string < TypZnaku, CechowanieZnakow, Alokator > UtworzonaKlasaT;
public:
UtworzonaKlasaT & replace( size_type _pos, size_type _len, const UtworzonaKlasaT & _str );
UtworzonaKlasaT & replace( const_iterator _i1, const_iterator _i2, const UtworzonaKlasaT & _str );
UtworzonaKlasaT & replace( size_type _pos, size_type _len, const UtworzonaKlasaT & _str, size_type _subpos, size_type _sublen );
UtworzonaKlasaT & replace( size_type _pos, size_type _len, const TypZnaku * _s );
UtworzonaKlasaT & replace( const_iterator _i1, const_iterator _i2, const TypZnaku * _s );
UtworzonaKlasaT & replace( size_type _pos, size_type _len, const TypZnaku * _s, size_type _n );
UtworzonaKlasaT & replace( const_iterator _i1, const_iterator _i2, const TypZnaku * _s, size_type _n );
UtworzonaKlasaT & replace( size_type _pos, size_type _len, size_type _n, TypZnaku _c );
UtworzonaKlasaT & replace( const_iterator _i1, const_iterator _i2, size_type _n, TypZnaku _c );
template < class WejsciowyIterator >
UtworzonaKlasaT & replace( const_iterator _i1, const_iterator _i2, WejsciowyIterator _pierwszy, WejsciowyIterator _ostatni );
UtworzonaKlasaT & replace( const_iterator _i1, const_iterator _i2, initializer_list < TypZnaku > _il );
};
}
Argumenty
Zwracana wartość
Metody zwracają referencję do obiektu, na którym zostały wywołane (
* this
).
Opis szczegółowy
Wszystkie metody znaki do zamiany określają przedziałem [
_i1,
_i2) lub wskazują, by zamienić
_len znaków od pozycji
_pos. Metody (1) wstawiają cały string, podczas gdy metoda (2) wstawia
_sublen znaków od pozycji
_subpos. Metody (3) wstawiają całą tablicę znaków daną wskaźnikiem
_s. Metody (4) działają podobnie do poprzedniczek, z tą różnicą, iż wstawiają tylko
_n znaków z danej tablicy. Metody (5) wstawiają
_n znaków o wartości
_c. Metoda (6) wstawia cały przedział [
_pierwszy,
_ostatni), natomiast wersja (7) wstawia obiekt powstały na bazie listy inicjalizacyjnej.
Rzucane wyjątki
Jeżeli wyjątek zostanie rzucony, wartość obiektu nie ulegnie zmianie.
Jeżeli
_s nie wskazuje na wystarczająco dużą tablicę (
_n jest za duże) lub przedział [
_pierwszy,
_ostatni) jest niepoprawny, to zachowanie jest niezdefiniowane.
Jeżeli
_pos jest większe od długości aktualnego obiektu albo
_subpos jest większe od długości
_str, to zostanie wtedy rzucony
out_of_range.
Jeżeli wynik
length przekroczy
max_size, to zostanie rzucony
length_error.
Jeżeli szablon korzysta z domyślnego alokatora, to
bad_alloc zostanie rzucony, gdy funkcja będzie chcieć zaalokować pamięć i operacja się nie powiedzie.
Przykład
#include <iostream>
#include <string>
typedef std::basic_string < char, std::char_traits < char >, std::allocator < char >> MojString;
int main()
{
MojString baza = "to jest testowy string.";
MojString str2 = "przykladowy";
MojString str3 = "duzy lancuch";
MojString str4 = "przydatna.";
MojString str = baza;
str.replace( 8, 7, str2 );
str.replace( 20, 6, str3, 5, 7 );
str.replace( 8, 11, "tylko" );
str.replace( 8, 5, "krotki kij", 6 );
str.replace( 22, 1, 3, '!' );
str.replace( str.begin(), str.end() - 3, str3 );
str.replace( str.begin(), str.begin() + 4, "zamiana" );
str.replace( str.begin() + 8, str.begin() + 15, "jest fajna ba!", 10 );
str.replace( str.begin() + 14, str.end() - 6, 4, 'a' );
str.replace( str.begin() + 13, str.end(), str4.begin(), str4.end() );
std::cout << str << '\n';
return 0;
}
Standardowe wyjście programu:
zamiana jest przydatna.
Zagadnienia powiązane
insert | Wstawia znaki do aktualnego łańcucha znaków. (metoda) |
---|
append | Modyfikuje przechowywany tekst poprzez dopisanie podanego łańcucha znaków na koniec tekstu. (metoda) |
---|
substr | Zwraca podciąg łańcucha znaków. (metoda) |
---|
erase | Usuwa część stringa. (metoda) |
---|
assign | Przypisuje nową wartość aktualnemu obiektowi. (metoda) |
---|
Linki zewnętrzne