Пространства имён
Варианты
Действия

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

Материал из cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
Функции-элементы
Доступ к элементам
basic_string::at
Итераторы
Ёмкость
Операции
Поиск
Константы
Правила вывода (C++17)
Функции, не являющиеся элементами
Ввод/Вывод
Сравнение
(до C++20)(до C++20)(до C++20)(до C++20)(до C++20)(C++20)
Числовые преобразования
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Вспомогательные классы
 
(1)
reference at( size_type pos );
(до C++20)
constexpr reference at( size_type pos );
(начиная с C++20)
(2)
const_reference at( size_type pos ) const;
(до C++20)
constexpr const_reference at( size_type pos ) const;
(начиная с C++20)

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

Содержание

[править] Параметры

pos позиция символа, который нужно вернуть

[править] Возвращаемое значение

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

[править] Исключения

Генерирует std::out_of_range, если pos >= size().

Если по какой-либо причине генерируется исключение, эти функции не имеют эффекта (строгая гарантия безопасности исключений).

[править] Сложность

Константная.

[править] Пример

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

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

abx
размер строки = 3
ёмкость строки = 7
basic_string::at

[править] Отчёты о дефектах

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 847 C++98 не было гарантии безопасности исключений добавлена надёжная гарантия безопасности исключений

[править] Смотрите также

получает доступ к указанному символу
(public функция-элемент) [править]
(C++17)
получает доступ к указанному символу с проверкой границ
(public функция-элемент std::basic_string_view<CharT,Traits>) [править]