std::string::empty în C++

empty() verifică dacă șirul este gol; clear() îl golește.

Sintaxă
bool empty() const noexcept;
void clear() noexcept;

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. empty doar întreabă; pentru golire folosești clear(). 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 cu find_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.