22.7 — std::string wstawianie

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.
guest
Twój adres e-mail nie zostanie wyświetlony
Znalazłeś błąd? Zostaw komentarz powyżej!
Komentarze związane z poprawkami zostaną usunięte po przetworzeniu, aby pomóc zmniejszyć bałagan. Dziękujemy za pomoc w ulepszaniu witryny dla wszystkich!
Awatary z https://gravatar.com/ są połączone z podanym adresem e-mail.
Powiadamiaj mnie o odpowiedziach:  
46 Komentarze
Najnowsze
Najstarsze Najczęściej głosowane
Wbudowane opinie
Wyświetl wszystkie komentarze