Namespaces
Variants

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

From 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 posición especificada pos si pos < size ( ) , o si pos == size ( ) :

1)

El comportamiento no está definido.

(until C++11)

Retorna una referencia a CharT ( ) , si el objeto referido por la referencia retornada es modificado a cualquier valor diferente de CharT ( ) , el comportamiento no está definido.

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

Si pos > size ( ) es true , el comportamiento es indefinido.

(hasta C++26)

Si pos > size ( ) es true :

  • Si la implementación está hardened , ocurre una contract violation . Además, si el manejador de violación de contrato retorna bajo semántica de evaluación "observe", el comportamiento es indefinido.
  • Si la implementación no está hardened, el comportamiento es indefinido.
(desde C++26)

Contenidos

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