• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Doklejenie stringa do stringa przy pomocy iteratora

VPS Starter Arubacloud
0 głosów
106 wizyt
pytanie zadane 22 kwietnia 2021 w C i C++ przez Whiskey_Taster Pasjonat (15,610 p.)

Czy da radę dokleić stringa do stringa w określonym miejscu przy użyciu iteratorów? Chciałem zrobić coś w stylu
 

std::string napis1 = "Ala ma kota"
std::string::iterator it = napis1.begin() + liczba;
napis1.insert(..., "brzydkiego");

Ale problem jest taki, że w tym linku mamy albo wklejenie pojedynczego znaku, kopii pojedynczego znaku, albo musimy podać jeszcze zakres dwóch iteratorów, co wiązałoby się z uprzednim otworzeniem zmiennej, w której bym trzymał napis. Widzę jeszcze, że można użyć initializer_list<char>, ale tego jeszcze nie ruszałem i nie wiem, w jaki sposób się poprawnie rozwiązuje dany problem, stąd wolę zapytać i posłuchać doświadczonych osób :)

1 odpowiedź

+1 głos
odpowiedź 22 kwietnia 2021 przez tangarr Mędrzec (154,780 p.)
wybrane 22 kwietnia 2021 przez Whiskey_Taster
 
Najlepsza

Jeżeli upierasz się na użycie iteratora to możesz to zrobić w ten sposób:

string napis1("XXXYYY");
string napis2("ZZZ");
auto iterator = napis1.begin()+3;
napis1.insert(iterator, napis2.begin(), napis2.end());

 

komentarz 22 kwietnia 2021 przez Whiskey_Taster Pasjonat (15,610 p.)
Nie, nie, to raczej ciekawość :D
U siebie już zmieniłem z iteratora na normalne indeksowanie, ale lubię wiedzieć pewne rzeczy na zapas. Czyli inaczej niż poprzez utworzenie nowego stringa się nie da, tak myślałem. Dzięki wielkie :)
komentarz 22 kwietnia 2021 przez tangarr Mędrzec (154,780 p.)

Nie do końca rozumiem co masz na myśli pisząc "utworzenie nowego stringa".
Jeżeli potraktujemy to stwierdzenie dosłownie to nie musisz tworzyć obiektu klasy std::string, możesz użyć łańcucha znakowego w stylu C.

string napis1("XXXYYY");
char napis2[]("ZZZ");
auto iterator = napis1.begin()+3;
napis1.insert(iterator, napis2, napis2+strlen(napis2));

 

komentarz 23 kwietnia 2021 przez Whiskey_Taster Pasjonat (15,610 p.)
Tak, chodziło o tworzenie obiektu klasy std::string. Wiem, jak to bywa irytujące, gdy ktoś używa źle terminologii, za co przepraszam - jeszcze muszę się douczyć :)

Generalnie ominąłem iterator i zrobiłem normalnie poprzez indeksowanie po stringu, po prostu chciałem trochę poużywać, żeby się zaznajomić z iteratorami i dokumentacją :D

Podobne pytania

0 głosów
2 odpowiedzi 144 wizyt
pytanie zadane 26 października 2018 w Java przez Potopiec Obywatel (1,550 p.)
0 głosów
1 odpowiedź 255 wizyt
pytanie zadane 9 września 2016 w C i C++ przez criss Mędrzec (172,590 p.)
0 głosów
1 odpowiedź 166 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...