Wstawianie
Wstawianie znaków do istniejącego ciągu można wykonać za pomocą funkcji wstaw().
string& string::insert (indeks typu_rozmiaru, const string& str) string& string::insert (indeks typu_rozmiaru, const char* str)- Obie funkcje wstawiają znaki str do łańcucha o indeksie
- Obie funkcje zwracają *to, aby można było je „połączyć”.
- Obie funkcje wyrzucają poza_zakres, jeśli indeks jest nieprawidłowy
- Obie funkcje zgłaszają wyjątek dotyczący długości_błędu, jeśli wynik przekracza maksymalną liczbę znaków.
- W wersji łańcuchowej w stylu C, str nie może mieć wartości NULL.
Przykładowy kod: string sString("aaaa");
cout << sString << endl;
sString.insert(2, string("bbbb"));
cout << sString << endl;
sString.insert(4, "cccc");
cout << sString << endl;
Wyjście: aaaa
aabbbbaa
aabbccccbbaa
|
Oto szalona wersja funkcji Insert(), która pozwala wstawić podciąg do łańcucha o dowolnym indeksie:
string& string::insert (size_type indeks, const string& str, size_type startindex, size_type num)- Ta funkcja wstawia num znaków str, zaczynając od startindex, do łańcucha o indeksie.
- Zwraca *to, aby można było je „połączyć”.
- Zgłasza out_of_range, jeśli indeks lub startindex jest poza zakresem
- Zgłasza wyjąteklength_error, jeśli wynik przekracza maksymalną liczbę znaków.
Przykładowy kod: string sString("aaaa");
const string sInsert("01234567");
sString.insert(2, sInsert, 3, 4); // insert substring of sInsert from index [3,7) into sString at index 2
cout << sString << endl;
Wyjście: aa3456aa
|
Istnieje odmiana metody Insert(), która wstawia pierwszą część łańcucha w stylu C:
string& string::insert(size_type indeks, const char* str, size_type len)- Wstawia len znaków str do łańcucha o indeksie
- Zwraca *to, aby można było je „połączyć”.
- Zgłasza wyjątek out_of_range, jeśli indeks jest nieprawidłowy
- Zgłasza wyjąteklength_error, jeśli wynik przekracza maksymalną liczbę znaków.
- Ignoruje znaki specjalne (takie jak ”)
Przykładowy kod: string sString("aaaa");
sString.insert(2, "bcdef", 3);
cout << sString << endl;
Wyjście: aabcdaa
|
Istnieje również odmiana metody Insert(), która wstawia ten sam znak wielokrotnie:
string& string::insert(size_type indeks, size_type num, char c)- Wstawia num wystąpień znaku c do ciągu o indeksie
- Zwraca *to, aby można było je „połączyć”.
- Zgłasza wyjątek out_of_range, jeśli indeks jest nieprawidłowy
- Zgłasza wyjąteklength_error, jeśli wynik przekracza maksymalną liczbę znaków.
Przykładowy kod: string sString("aaaa");
sString.insert(2, 4, 'c');
cout << sString << endl;
Wyjście: aaccccaa
|
I wreszcie funkcja wstaw() ma również trzy różne wersje korzystające z iteratorów:
void wstaw(iterator it, size_type num, char c) iterator string::insert(iterator it, char c) void string::insert(iterator it, początek elementu wejściowego, początek elementu wejściowego). end)- Pierwsza funkcja wstawia num wystąpień znaku c przed iteratorem.
- Druga wstawia pojedynczy znak c przed iteratorem i zwraca iterator na pozycję wstawionego znaku.
- Trzecia wstawia wszystkie znaki pomiędzy [begin,end) przed iteratorem it.
- Wszystkie funkcje zgłaszają wyjąteklength_error, jeśli wynik przekracza maksymalną liczbę znaków.
|