Ce face std::string::starts_with
s.starts_with("http") și s.ends_with(".pdf") răspund direct cu true sau false. Înainte de C++20 se scria s.rfind("http", 0) == 0 sau s.compare(...), mult mai greu de citit.
Acceptă un text sau un singur caracter. Comparația ține cont de litere mari și mici.
Parametri
| Parametru | Descriere |
|---|---|
prefix / sufix |
Textul sau caracterul verificat. |
Ce returnează
true sau false.
Exemple
Exemplul 1: Tipul unor fișiere și adrese
#include <iostream>
#include <string>
int main() {
std::string fisiere[] = {"factura.pdf", "poza.JPG", "raport.pdf.exe"};
for (const auto& f : fisiere) {
std::cout << f << ": " << (f.ends_with(".pdf") ? "PDF" : "alt tip") << '\n';
}
std::string url = "https://www.dexblog.ro";
std::cout << std::boolalpha << "Sigur: " << url.starts_with("https://") << '\n';
std::cout << "Începe cu h: " << url.starts_with('h') << '\n';
}
Rezultat
factura.pdf: PDF
poza.JPG: alt tip
raport.pdf.exe: alt tip
Sigur: true
Începe cu h: true
Exemplul 2: Filtrarea comenzilor după prefix
#include <iostream>
#include <string>
#include <vector>
int main() {
std::vector<std::string> coduri = {"RO-IS-101", "RO-CJ-202", "MD-CH-303", "RO-IS-404"};
for (const auto& c : coduri) {
if (c.starts_with("RO-IS")) {
std::cout << c << '\n';
}
}
}
Rezultat
RO-IS-101
RO-IS-404
Greșeli frecvente
- Compilezi cu un standard mai vechi decât C++20: funcțiile nu există. Adaugă
-std=c++20sau mai nou. - Verifici extensii fără să ții cont de majuscule:
"poza.JPG".ends_with(".jpg")estefalse. Transformă întâi textul în litere mici.
Comenzi înrudite
std::string::contains: Verifică dacă șirul conține un anumit text sau caracter, oriunde în el (C++23).std::string::find: Caută un text și returnează poziția primei (find) sau ultimei (rfind) apariții, ori npos.std::string::compare: Compară două șiruri și returnează un număr negativ, zero sau pozitiv, ca la sortare.std::string_view: Vedere doar pentru citire asupra unui text existent, fără copiere; se poate micșora la capete.