std::string::contains în C++

Verifică dacă șirul conține un anumit text sau caracter, oriunde în el (C++23).

Sintaxă
bool contains(std::string_view text) const noexcept;
bool contains(char c) const noexcept;

Ce face std::string::contains

s.contains("mere") este echivalentul clar al lui s.find("mere") != std::string::npos. Returnează doar true sau false; dacă ai nevoie și de poziție, folosește find.

Merge și cu un caracter: email.contains('@'). Există și la std::string_view.

Parametri

Parametru Descriere
text / c Textul sau caracterul căutat.

Ce returnează

true sau false.

Exemple

Exemplul 1: Căutarea unui cuvânt în recenzii

#include <iostream>
#include <string>

int main() {
    std::string recenzii[] = {
        "Livrare rapidă, produs bun",
        "Produsul a venit defect",
        "Totul ok, recomand",
    };
    for (const auto& r : recenzii) {
        if (r.contains("defect")) {
            std::cout << "De verificat: " << r << '\n';
        }
    }
}

Rezultat

De verificat: Produsul a venit defect

Exemplul 2: O validare simplă de e-mail

#include <iostream>
#include <string>

int main() {
    for (std::string email : {"ana@dexblog.ro", "ana.dexblog.ro", "ana@dexblog ro"}) {
        bool ok = email.contains('@') && !email.contains(' ');
        std::cout << email << ": " << (ok ? "pare valid" : "invalid") << '\n';
    }
}

Rezultat

ana@dexblog.ro: pare valid
ana.dexblog.ro: invalid
ana@dexblog ro: invalid

Greșeli frecvente

  • Folosești contains pe un compilator care nu are încă C++23: ai eroare de compilare. Alternativa este find(...) != std::string::npos.

Comenzi înrudite

  • std::string::find: Caută un text și returnează poziția primei (find) sau ultimei (rfind) apariții, ori npos.
  • std::string::starts_with: Verifică dacă șirul începe (starts_with) sau se termină (ends_with) cu un text dat (C++20).
  • std::regex_search: Caută prima porțiune din text care se potrivește cu modelul, oriunde în text.