Ce face std::string::at
s.at(i) returnează caracterul de la poziția i, ca s[i], dar verifică poziția: dacă i >= size(), aruncă std::out_of_range în loc să citească memorie străină.
front() este primul caracter (s[0]), iar back() ultimul (s[s.size() - 1]). Toate returnează referințe, deci poți și modifica: s.front() = 'A';.
Parametri
| Parametru | Descriere |
|---|---|
poz |
Poziția caracterului (de la 0). |
Ce returnează
Referință la caracter.
Exemple
Exemplul 1: Primul, ultimul și unul din mijloc
#include <iostream>
#include <string>
int main() {
std::string s = "constanta";
std::cout << "Primul: " << s.front() << ", ultimul: " << s.back() << ", al treilea: " << s.at(2) << '\n';
s.front() = 'C';
s.back() = '!';
std::cout << s << '\n';
}
Rezultat
Primul: c, ultimul: a, al treilea: n
Constant!
Exemplul 2: Poziție greșită prinsă cu at()
#include <iostream>
#include <stdexcept>
#include <string>
int main() {
std::string cod = "RO12";
try {
std::cout << cod.at(1) << '\n';
std::cout << cod.at(10) << '\n';
} catch (const std::out_of_range&) {
std::cout << "Eroare: poziția nu există\n";
}
}
Rezultat
O
Eroare: poziția nu există
Greșeli frecvente
- Apelezi
front()sauback()pe un șir gol: comportament nedefinit. Verifică întâiempty(). - Folosești
s[i]fără verificare cu un indice venit de la utilizator.atte protejează cu o excepție.
Comenzi înrudite
std::string: Șir de caractere care își gestionează singur memoria; atenție, lucrează cu octeți, nu cu litere.std::string::push_back: push_back adaugă un caracter la final; pop_back șterge ultimul caracter.std::string::size: Returnează lungimea șirului în octeți; length() este exact același lucru.