Namespaces
Variants

std::basic_string<CharT,Traits,Allocator>::operator[]

Depuis fr.cppreference.net
 
 
 
std::basic_string
 
CharT& operator[]( size_type pos );
(1) (constexpr depuis C++20)
const CharT& operator[]( size_type pos ) const;
(2) (constexpr depuis C++20)

Retourne une référence vers le caractère à la position spécifiée pos si pos < size(), ou si pos == size() :

1)

Le comportement est indéfini.

(jusqu'à C++11)

Retourne une référence vers CharT() ; si l'objet référencé par la référence retournée est modifié pour prendre une valeur autre que CharT(), le comportement est indéfini.

(depuis C++11)
2) Retourne une référence vers CharT().

Si pos > size() est true, le comportement est indéfini.

(jusqu'à C++26)

Si pos > size() est true :

(depuis C++26)

Paramètres

pos - position du caractère à retourner

Valeur de retour

1) * ( begin ( ) + pos ) si pos < size ( ) , ou une référence à CharT ( ) si pos == size ( ) (depuis C++11) .
2) * ( begin ( ) + pos ) si pos < size ( ) , ou une référence à CharT ( ) si pos == size ( ) .

Complexité

Constante.

Exemple

#include <iostream>
#include <string>
int main()
{
    const std::string e("Exemplar");
    for (unsigned i = e.length() - 1; i != 0; i /= 2)
        std::cout << e[i];
    std::cout << '\n';
    const char* c = &e[0];
    std::cout << c << '\n'; // afficher en tant que chaîne C
    // Modifier le dernier caractère de s en 'y'
    std::string s("Exemplar ");
    s[s.size() - 1] = 'y'; // équivalent à s.back() = 'y';
    std::cout << s << '\n';
}

Sortie :

rmx
Exemplar
Exemplary

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 259 C++98 la surcharge ( 1 ) pouvait retourner une lvalue const
data ( ) [ pos ] , ce qui était mal formé
modifié pour retourner
* ( begin ( ) + pos )
LWG 2475 C++11 si pos == size ( ) , le comportement de modification de
l'objet référencé par la référence retournée était indéfini
bien défini si
modifié en CharT ( )

Voir aussi

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