Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Hasło nie zostało zweryfikowane
Niniejsze hasło zostało opracowane, jednak nie zostało ono zweryfikowane przez administrację serwisu. Jeżeli znalazłeś błędy merytoryczne w niniejszym dokumencie, prosimy o ich zgłoszenie na forum w dziale Znalezione błędy.
Opracował: Mrovqa
Język C++

basic_string::insert

[metoda] Wstawia znaki do aktualnego łańcucha znaków.

Składnia

C/C++
#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 ); //(1a)
       
        UtworzonaKlasaT & insert( size_type _pos, const UtworzonaKlasaT & _str, size_type _subpos, size_type _sublen ); //(1b)
       
        UtworzonaKlasaT & insert( size_type _pos, const charT * _s ); //(1c)
       
        UtworzonaKlasaT & insert( size_type _pos, const charT * _s, size_type _n ); //(1d)
       
        UtworzonaKlasaT & insert( size_type _pos, size_type _n, TypZnaku _c ); //(2a)
        iterator insert( const_iterator _p, size_type _n, TypZnaku _c ); //(2b)
       
        iterator insert( const_iterator _p, TypZnaku _c ); //(2c)
       
        template < class WejsciowyIterator >
        iterator insert( iterator _p, WejsciowyIterator _pierwszy, WejsciowyIterator _ostatni ); //(3)
       
        UtworzonaKlasaT & insert( const_iterator _p, initializer_list < TypZnaku > _il ); //(4)
    }; //class basic_string
} //namespace std

Argumenty

ArgumentOpis
_posPunkt wstawienia nowych znaków. Nowa zawartość zostanie wstawiona przed znakiem pozycji _pos.
_strInny obiekt tego samego typu (z uwzględnieniem parametrów szablonu!).
_subposPozycja pierwszego znaku podciągu w _str, który zostanie wstawiony.
_sublenMaksymalna długość podciągu, który ma zostać skopiowany. Wartość » standard C++ » basic_stringnpos spowoduje wykorzystanie wszystkich pozostałych znaków.
_sWskaźnik na tablicę znaków.
_nLiczba znaków do wstawienia.
_cPojedynczy znak do wstawienia.
_pIterator wskazujący miejsce wstawienia. Nowy zawartość zostanie wstawiona przed znak wskazywany przez _p.
_pierwszy, _ostatniPrzedział [_pierwszy, _ostatni) określający łańcuch znaków do wstawienia.
_ilObiekt » standard C++11initializer_list. To co zostanie z niego skonstruowane będzie wstawione do aktualnego stringa.

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 » standard C++out_of_range.
Jeżeli wynik » standard C++ » basic_stringlength przekroczy » standard C++ » basic_stringmax_size, to zostanie rzucony » standard C++length_error.
Jeżeli szablon korzysta z domyślnego alokatora, to » standard C++bad_alloc zostanie rzucony, gdy funkcja będzie chcieć zaalokować pamięć i operacja się nie powiedzie.

Przykład

C/C++
#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 ); // byc (nie byc )pytanie
    str.insert( 12, "oto jest moj zamek", 9 ); // byc nie byc (oto jest )pytanie
    str.insert( 11, 1, ':' ); // byc nie byc(:) oto jest pytanie
    str.insert( str.end(), 3, '.' ); // byc nie byc: oto jest pytanie(...)
    it = str.insert( str.begin() + 3, ',' ); // byc(,) nie byc: oto jest pytanie...
    str.insert( it + 2, str2.begin(), str2.begin() + 5 ); // byc, (albo )nie byc: oto jest pytanie...
   
    std::cout << str << '\n';
    return 0;
}
Standardowe wyjście programu:
byc, albo nie byc: oto jest pytanie...

Zagadnienia powiązane

appendModyfikuje przechowywany tekst poprzez dopisanie podanego łańcucha znaków na koniec tekstu. (metoda)
replaceZamienia część znaków na inne. (metoda)
substrZwraca 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