Namespaces
Variants

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

С сайта ru.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> )