std::string::at în C++

at(i) dă caracterul de la poziția i cu verificare; front() și back() dau primul și ultimul.

Sintaxă
char& at(std::size_t poz);
char& front();  // C++11
char& back();   // C++11

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() sau back() pe un șir gol: comportament nedefinit. Verifică întâi empty().
  • Folosești s[i] fără verificare cu un indice venit de la utilizator. at te 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.