Spec-Zone.ru › C++

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

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().

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

Сложность

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

Пример

#include <iostream>
#include <stdexcept>
#include <string>

int main()
{
    std::string s("message"); // for 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
    {
        // This will throw since the requested offset is greater than the current size.
        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 Применено к Опубликованное поведение Правильное поведение
LWG 847 C++98 гарантия безопасности при исключениях отсутствовала добавлена гарантия строгой безопасности при исключениях
LWG 2207 C++98 поведение было неопределённым, если pos >= size() равно true в этом случае всегда выбрасывается исключение

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/string/basic_string/at

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API