Ce face std::string::insert
s.insert(poz, text) pune text înaintea caracterului de la poziția poz. Cu poz = 0 inserezi la început, cu poz = s.size() la final.
Varianta insert(poz, n, c) inserează caracterul c de n ori. Dacă poz este mai mare decât size(), se aruncă excepția std::out_of_range.
Parametri
| Parametru | Descriere |
|---|---|
poz |
Poziția (în octeți) înaintea căreia se inserează. |
text |
Textul inserat. |
n, c |
Inserează caracterul c de n ori. |
Ce returnează
Referință la șirul modificat.
Exemple
Exemplul 1: Inserarea unui titlu și a unui separator
#include <iostream>
#include <string>
int main() {
std::string nume = "Popescu Ana";
nume.insert(0, "Dna ");
std::cout << nume << '\n';
std::string telefon = "0740123456";
telefon.insert(4, " ");
telefon.insert(8, " ");
std::cout << telefon << '\n';
}
Rezultat
Dna Popescu Ana
0740 123 456
Exemplul 2: Completare cu zerouri la stânga
#include <iostream>
#include <string>
int main() {
std::string nr = std::to_string(42);
if (nr.size() < 6) {
nr.insert(0, 6 - nr.size(), '0');
}
std::cout << "Factura " << nr << '\n';
}
Rezultat
Factura 000042
Greșeli frecvente
- Calculezi poziția după numărul de litere într-un text cu diacritice: pozițiile sunt în octeți, așa că inserezi în mijlocul unei litere.
- Inserezi repetat la început într-un șir lung: fiecare inserare mută tot restul textului, ceea ce devine lent.
Comenzi înrudite
std::string::append: Adaugă text la sfârșitul șirului, la fel ca +=, cu variante pentru bucăți și caractere repetate.std::string::erase: Șterge o porțiune din șir, dată prin poziția de început și numărul de caractere.std::string::replace: Înlocuiește porțiunea de n caractere de la poziția poz cu alt text.