std::basic_string<CharT,Traits,Allocator>::at
Материал из cppreference.com
< cpp | string | basic string
(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> )
|