| (1) | ||
| reference operator[]( size_type pos ); | (until C++20) | |
| constexpr reference operator[]( size_type pos ); | (since C++20) | |
| (2) | ||
| const_reference operator[]( size_type pos ) const; | (until C++20) | |
| constexpr const_reference operator[]( size_type pos ) const; | (since C++20) | 
Returns a reference to the character at specified location pos if pos < size(), or a reference to CharT() if pos == size(). No bounds checking is performed.
If pos > size(), the behavior is undefined.
For overload (1), if pos == size(), the behavior is undefined if the object referred by the returned reference is modified to any value other than CharT() (since C++11).
| pos | - | position of the character to return | 
*(begin() + pos) if pos < size(), or a reference to CharT() if pos == size().
Constant.
#include <iostream>
#include <string>
 
int main()
{
    const std::string e("Exemplar");
    for (unsigned i = e.length() - 1; i != 0; i /= 2)
        std::cout << e[i];
    std::cout << '\n';
 
    const char* c = &e[0];
    std::cout << c << '\n'; // print as a C string
 
    // Change the last character of s into a 'y'
    std::string s("Exemplar ");
    s[s.size() - 1] = 'y'; // equivalent to s.back() = 'y';
    std::cout << s << '\n';
}Output:
rmx Exemplar Exemplary
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior | 
|---|---|---|---|
| LWG 259 | C++98 | data()[pos]was returned ifpos < size()(its type is const CharT&, which conflicts withreference) | changed to *(begin() + pos) | 
| LWG 2475 | C++11 | if pos == size(), the behavior of modifying theobject referred by the returned reference was undefined | well-defined if modified to CharT() | 
| accesses the specified character with bounds checking (public member function) | |
| (DR*) | accesses the first character (public member function) | 
| (DR*) | accesses the last character (public member function) | 
| (C++17) | accesses the specified character (public member function of std::basic_string_view<CharT,Traits>) | 
    © cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
    https://en.cppreference.com/w/cpp/string/basic_string/operator_at