Namespaces
Variants

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

From 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 à l'élément à la position spécifiée pos si pos < size ( ) , ou si pos == size ( ) :

1)

Le comportement n'est pas défini.

(until C++11)

Retourne une référence vers CharT ( ) , si l'objet référencé par la référence retournée est modifié à une valeur autre que CharT ( ) , le comportement n'est pas défini.

(since C++11)
2) Retourne une référence à CharT ( ) .

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

(jusqu'à C++26)

Si pos > size ( ) est true :

  • Si l'implémentation est durcie , une violation de contrat se produit. De plus, si le gestionnaire de violation de contrat retourne sous la sémantique d'évaluation "observer", le comportement est indéfini.
  • Si l'implémentation n'est pas durcie, le comportement est indéfini.
(depuis C++26)

Table des matières

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> )