Namespaces
Variants

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

From cppreference.net
std::basic_string
CharT & at ( size_type pos ) ;
(1) (constexpr начиная с C++20)
const CharT & at ( size_type pos ) const ;
(2) (constexpr начиная с C++20)

Возвращает ссылку на символ в указанной позиции pos . Выполняется проверка границ, при недопустимом доступе будет выброшено исключение типа std::out_of_range .

Содержание

Параметры

pos - позиция возвращаемого символа

Возвращаемое значение

Ссылка на запрошенный символ.

Исключения

Выбрасывает std::out_of_range если pos >= size ( ) .

Если исключение выбрасывается по любой причине, эти функции не оказывают никакого эффекта ( strong exception safety guarantee ).

Сложность

Константа.

Пример

#include <iostream>
#include <stdexcept>
#include <string>
int main()
{
    std::string s("message"); // для capacity
    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
    {
        // Это выбросит исключение, так как запрашиваемое смещение больше текущего размера.
        s.at(3) = 'x';
    }
    catch (std::out_of_range const& exc)
    {
        std::cout << exc.what() << '\n';
    }
}

Возможный вывод:

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

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 847 C++98 не было гарантии безопасности исключений добавлена строгая гарантия безопасности исключений
LWG 2207 C++98 поведение было неопределенным, если pos >= size ( ) равно true всегда выбрасывает исключение в этом случае

Смотрите также

обращается к указанному символу
(публичная функция-член)
обращается к указанному символу с проверкой границ
(публичная функция-член std::basic_string_view<CharT,Traits> )