Namespaces
Variants

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

De es.cppreference.net
 
 
 
std::basic_string
 
CharT& operator[]( size_type pos );
(1) (constexpr desde C++20)
const CharT& operator[]( size_type pos ) const;
(2) (constexpr desde C++20)

Devuelve una referencia al carácter en la ubicación especificada pos si pos < size(), o si pos == size():

1)

El comportamiento no está definido.

(hasta C++11)

Devuelve una referencia a CharT(), si el objeto referido por la referencia devuelta se modifica a cualquier valor distinto de CharT(), el comportamiento no está definido.

(desde C++11)
2) Devuelve una referencia a CharT().

Si pos > size() es true, el comportamiento no está definido.

(hasta C++26)

Si pos > size() es true:

(desde C++26)

Parámetros

pos - posición del carácter a devolver

Valor de retorno

1) * ( begin ( ) + pos ) si pos < size ( ) , o una referencia a CharT ( ) si pos == size ( ) (desde C++11) .
2) * ( begin ( ) + pos ) si pos < size ( ) , o una referencia a CharT ( ) si pos == size ( ) .

Complejidad

Constante.

Ejemplo

#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'; // imprimir como cadena C
    // Cambiar el último carácter de s por una 'y'
    std::string s("Exemplar ");
    s[s.size() - 1] = 'y'; // equivalente a s.back() = 'y';
    std::cout << s << '\n';
}

Salida:

rmx
Exemplar
Exemplary

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 259 C++98 la sobrecarga ( 1 ) podría devolver un lvalue const
data ( ) [ pos ] , lo cual estaba mal formado
cambiado para devolver
* ( begin ( ) + pos )
LWG 2475 C++11 si pos == size ( ) , el comportamiento de modificar el
objeto referenciado por la referencia devuelta no estaba definido
bien definido si
modificado a CharT ( )

Véase también

accede al carácter especificado con verificación de límites
(función miembro pública)
( DR* )
accede al primer carácter
(función miembro pública)
( DR* )
accede al último carácter
(función miembro pública)
accede al carácter especificado
(función miembro pública de std::basic_string_view<CharT,Traits> )