Ce face std::string::empty
empty() returnează true dacă șirul nu are niciun caracter (echivalent cu size() == 0, dar mai clar). Nu modifică șirul, în ciuda numelui.
clear() șterge tot conținutul; după el, size() este 0 și empty() este true. Memoria alocată de obicei rămâne rezervată pentru refolosire.
Ce returnează
empty(): true sau false. clear(): nimic.
Exemple
Exemplul 1: Validarea unui câmp obligatoriu
Utilizatorul apasă doar Enter, deci rândul citit este gol.
#include <iostream>
#include <string>
int main() {
std::string nume;
std::getline(std::cin, nume);
if (nume.empty()) {
std::cout << "Numele este obligatoriu.\n";
} else {
std::cout << "Salut, " << nume << "!\n";
}
}
Ce scrie utilizatorul (intrare)
Rezultat
Numele este obligatoriu.
Exemplul 2: Golirea și refolosirea unui șir
#include <iostream>
#include <string>
int main() {
std::string mesaj = "Comanda a fost trimisă";
std::cout << std::boolalpha << "Gol: " << mesaj.empty() << ", lungime " << mesaj.size() << '\n';
mesaj.clear();
std::cout << "Gol: " << mesaj.empty() << ", lungime " << mesaj.size() << '\n';
mesaj = "Comandă nouă";
std::cout << mesaj << '\n';
}
Rezultat
Gol: false, lungime 23
Gol: true, lungime 0
Comandă nouă
Greșeli frecvente
- Scrii
s.empty();crezând că golește șirul.emptydoar întreabă; pentru golire foloseșticlear(). Compilatorul te avertizează că rezultatul este ignorat. - Un șir cu un spațiu (
" ") nu este gol. Pentru validarea câmpurilor, elimină întâi spațiile (de exemplu cufind_first_not_of).
Comenzi înrudite
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.std::string::find_first_of: Caută primul sau ultimul caracter dintr-un set, sau primul caracter care nu e în set.