Ce face std::string::resize
Dacă n este mai mic decât lungimea actuală, resize(n) păstrează doar primele n caractere. Dacă este mai mare, adaugă caractere la final: '\0' implicit, sau caracterul c dat.
Este util pentru a pregăti un șir de o anumită mărime înainte să-l completezi prin data(), sau pentru a tăia un text la o lungime maximă.
Parametri
| Parametru | Descriere |
|---|---|
n |
Lungimea nouă. |
c |
Opțional: caracterul de completare. |
Ce returnează
Nimic.
Exemple
Exemplul 1: Tăiere și completare
#include <iostream>
#include <string>
int main() {
std::string titlu = "Cum înveți C++ în 30 de zile";
std::string scurt = titlu;
scurt.resize(12); // „Cum înveți” = 10 litere, dar 12 octeți
std::cout << "[" << scurt << "]\n";
std::string cod = "AB";
cod.resize(6, '0');
std::cout << "[" << cod << "]\n";
}
Rezultat
[Cum înveți]
[AB0000]
Exemplul 2: Previzualizare cu „…”
#include <iostream>
#include <string>
int main() {
std::string descriere = "Laptop ultraportabil, 16 GB RAM, SSD 1 TB, ecran 14 inch";
const std::size_t maxim = 24;
if (descriere.size() > maxim) {
descriere.resize(maxim - 3);
descriere += "...";
}
std::cout << descriere << '\n';
}
Rezultat
Laptop ultraportabil,...
Greșeli frecvente
- Tai cu
resizeun text cu diacritice la o lungime oarecare: dacă tăietura cade în mijlocul unei litere, textul rămâne cu un octet incomplet. - Mărești cu
resize(n)fără caracter de completare și apoi afișezi: caracterele'\0'adăugate nu se văd, dar sunt în șir și schimbă comparațiile.
Comenzi înrudite
std::string::reserve: reserve rezervă memorie dinainte; capacity arată cât încape; shrink_to_fit eliberează surplusul.std::string::size: Returnează lungimea șirului în octeți; length() este exact același lucru.std::string::erase: Șterge o porțiune din șir, dată prin poziția de început și numărul de caractere.