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

< cpp‎ | string‎ | basic string

reference at( size_type pos ); |  | (C++20 前)
constexpr reference at( size_type pos ); |  | (C++20 起)
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 | - | 要返回的字符位置

### 返回值

到请求的字符的引用。

### 异常

若 pos >= size() 则抛出 std::out_of_range 。

### 复杂度

常数。

### 示例

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

    int main()
    {
        std::string s("message"); // 为容量

        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

### 参阅

operator[] | 访问指定字符 (公开成员函数)