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
containspe un compilator care nu are încă C++23: ai eroare de compilare. Alternativa estefind(...) != 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.