std::basic_string<CharT,Traits,Allocator>::at
Материал из cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| (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>)
|