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 & insert( size_type _pos, const UtworzonaKlasaT & _str );
UtworzonaKlasaT & insert( size_type _pos, const UtworzonaKlasaT & _str, size_type _subpos, size_type _sublen );
UtworzonaKlasaT & insert( size_type _pos, const charT * _s );
UtworzonaKlasaT & insert( size_type _pos, const charT * _s, size_type _n );
UtworzonaKlasaT & insert( size_type _pos, size_type _n, TypZnaku _c );
iterator insert( const_iterator _p, size_type _n, TypZnaku _c );
iterator insert( const_iterator _p, TypZnaku _c );
template < class WejsciowyIterator >
iterator insert( iterator _p, WejsciowyIterator _pierwszy, WejsciowyIterator _ostatni );
UtworzonaKlasaT & insert( const_iterator _p, initializer_list < TypZnaku > _il );
};
}
Argumenty
Zwracana wartość
Sygnatury funkcji zwracające referencję do
UtworzonaKlasaT zwracają
* this
.
Te zwracające
iterator zwracają iterator wskazujący na pierwszy wstawiony znak.
Opis szczegółowy
Metody (1) wstawiają tekst na pozycję
_pos. Wstawiany tekst może być innym stringiem (1a), jego częścią (1b), wskaźnikiem do tablicy znaków (1c) lub częścią owej tablicy (1d). Metody (2) wstawiają
_n znaków o wartości
_c przed znak określony indeksem
_pos lub iteratorem
_p. Wyjątkiem jest funckja (2c), która wstawia tylko jeden znak. Metoda (3) wstawia znaki z przedziału [
_pierwszy,
_ostatni) przed znak określony iteratorem
_p. Metoda (4) wstawia zawartość obiektu zbudowanego na podstawie listy inicjalizacyjnej na pozycję
_p aktualnego obiektu.
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
_p albo 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 str = "byc pytanie";
MojString str2 = "albo nie byc drzewem";
MojString::iterator it;
str.insert( 4, str2, 5, 8 );
str.insert( 12, "oto jest moj zamek", 9 );
str.insert( 11, 1, ':' );
str.insert( str.end(), 3, '.' );
it = str.insert( str.begin() + 3, ',' );
str.insert( it + 2, str2.begin(), str2.begin() + 5 );
std::cout << str << '\n';
return 0;
}
Standardowe wyjście programu:
byc, albo nie byc: oto jest pytanie...
Zagadnienia powiązane
append | Modyfikuje przechowywany tekst poprzez dopisanie podanego łańcucha znaków na koniec tekstu. (metoda) |
---|
replace | Zamienia część znaków na inne. (metoda) |
---|
substr | Zwraca podciąg łańcucha znaków. (metoda) |
---|
operator= | Przypisuje nową wartość aktualnemu obiektowi. (operator - metoda) |
---|
operator+= | Dopisuje łańcuch znaków na koniec kontenera. (operator - metoda) |
---|
Linki zewnętrzne