Namespaces
Variants

std::basic_string<CharT,Traits,Allocator>:: at

From cppreference.net
std::basic_string
CharT & at ( size_type pos ) ;
(1) (constexpr depuis C++20)
const CharT & at ( size_type pos ) const ;
(2) (constexpr depuis C++20)

Retourne une référence au caractère à la position spécifiée pos . Une vérification des limites est effectuée, une exception de type std::out_of_range sera levée en cas d'accès invalide.

Table des matières

Paramètres

pos - position du caractère à retourner

Valeur de retour

Référence au caractère demandé.

Exceptions

Lance std::out_of_range si pos >= size ( ) .

Si une exception est levée pour quelque raison que ce soit, ces fonctions n'ont aucun effet ( strong exception safety guarantee ).

Complexité

Constante.

Exemple

#include <iostream>
#include <stdexcept>
#include <string>
int main()
{
    std::string s("message"); // pour la capacité
    s = "abc";
    s.at(2) = 'x'; // OK
    std::cout << s << '\n';
    std::cout << "string size = " << s.size() << '\n';
    std::cout << "string capacity = " << s.capacity() << '\n';
    try
    {
        // Cela va lancer une exception car l'offset demandé est supérieur à la taille actuelle.
        s.at(3) = 'x';
    }
    catch (std::out_of_range const& exc)
    {
        std::cout << exc.what() << '\n';
    }
}

Sortie possible :

abx
string size = 3
string capacity = 7
basic_string::at

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 847 C++98 il n'y avait aucune garantie de sécurité des exceptions garantie de sécurité forte des exceptions ajoutée
LWG 2207 C++98 le comportement était indéfini si pos >= size ( ) est true lève toujours une exception dans ce cas

Voir aussi

accède au caractère spécifié
(fonction membre publique)
accède au caractère spécifié avec vérification des limites
(fonction membre publique de std::basic_string_view<CharT,Traits> )