Namespaces
Variants

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

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

Devuelve una referencia al carácter en la posición especificada pos . Se realiza verificación de límites, se lanzará una excepción de tipo std::out_of_range en caso de acceso inválido.

Contenidos

Parámetros

pos - posición del carácter a devolver

Valor de retorno

Referencia al carácter solicitado.

Excepciones

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

Si se lanza una excepción por cualquier razón, estas funciones no tienen efecto ( strong exception safety guarantee ).

Complejidad

Constante.

Ejemplo

#include <iostream>
#include <stdexcept>
#include <string>
int main()
{
    std::string s("message"); // para capacidad
    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
    {
        // Esto lanzará una excepción ya que el desplazamiento solicitado es mayor que el tamaño actual.
        s.at(3) = 'x';
    }
    catch (std::out_of_range const& exc)
    {
        std::cout << exc.what() << '\n';
    }
}

Salida posible:

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

Informes de defectos

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

DR Se aplica a Comportamiento publicado Comportamiento correcto
LWG 847 C++98 no existía garantía de seguridad de excepciones se añadió garantía de seguridad fuerte de excepciones
LWG 2207 C++98 el comportamiento era indefinido si pos >= size ( ) es true siempre lanza una excepción en este caso

Véase también

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