Ce face std::string::erase
s.erase(poz, n) șterge n caractere începând de la poz. Fără n, șterge tot de la poz până la final. Fără argumente, golește șirul.
Se combină des cu find: găsești unde începe ce vrei să ștergi, apoi apelezi erase. Din C++20, std::erase(s, 'x') șterge toate aparițiile unui caracter.
Parametri
| Parametru | Descriere |
|---|---|
poz |
Poziția primului caracter șters. |
n |
Câte caractere se șterg; implicit până la final. |
Ce returnează
Referință la șirul modificat. Aruncă std::out_of_range dacă poz > size().
Exemple
Exemplul 1: Ștergerea unei porțiuni și a finalului
#include <iostream>
#include <string>
int main() {
std::string s = "Ana are multe mere";
s.erase(8, 6); // „multe ”
std::cout << s << '\n';
std::string fisier = "raport_final.pdf";
fisier.erase(fisier.find('.')); // de la punct până la final
std::cout << fisier << '\n';
}
Rezultat
Ana are mere
raport_final
Exemplul 2: Ștergerea tuturor spațiilor
#include <iostream>
#include <string>
int main() {
std::string iban = "RO49 AAAA 1B31 0075 9384 0000";
std::erase(iban, ' '); // C++20
std::cout << iban << " (" << iban.size() << " caractere)\n";
}
Rezultat
RO49AAAA1B31007593840000 (24 caractere)
Greșeli frecvente
- Apelezi
s.erase(s.find(x))fără să verifici căfinda găsit ceva:nposeste mai mare decâtsize(), deci se aruncăstd::out_of_range. - Ștergi elemente într-o buclă care merge înainte și sari peste caractere, pentru că după ștergere restul se mută spre stânga.
Comenzi înrudite
std::string::insert: Inserează text la o anumită poziție în șir, mutând restul spre dreapta.std::string::replace: Înlocuiește porțiunea de n caractere de la poziția poz cu alt text.std::string::find: Caută un text și returnează poziția primei (find) sau ultimei (rfind) apariții, ori npos.std::string::push_back: push_back adaugă un caracter la final; pop_back șterge ultimul caracter.