std::basic_string<CharT,Traits,Allocator>::operator[]
From cppreference.com
< cpp | string | basic string
CharT& operator[]( size_type pos ); | (1) | (constexpr since C++20) |
const CharT& operator[]( size_type pos )const; | (2) | (constexpr since C++20) |
Returns a reference to the character at specified location pos if pos < size(), or if pos == size():
1)
The behavior is undefined. | (until C++11) |
Returns a reference to CharT(), if the object referred by the returned reference is modified to any value other than CharT(), the behavior is undefined. | (since C++11) |
2) Returns a reference to CharT().
If pos > size() is true, the behavior is undefined. | (until C++26) |
If pos > size() is true:
| (since C++26) |
Contents |
[edit]Parameters
pos | - | position of the character to return |
[edit]Return value
1)*(begin()+ pos) if pos < size(), or a reference to CharT() if pos == size()(since C++11).
2)*(begin()+ pos) if pos < size(), or a reference to CharT() if pos == size().
[edit]Complexity
Constant.
[edit]Example
Run this code
#include <iostream>#include <string> int main(){conststd::string e("Exemplar");for(unsigned i = e.length()-1; i !=0; i /=2)std::cout<< e[i];std::cout<<'\n'; constchar* 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
[edit]Defect reports
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 | overload (1) could return const lvalue data()[pos], which was ill-formed | changed to return *(begin()+ pos) |
LWG 2475 | C++11 | if pos == size(), the behavior of modifying the object referred by the returned reference was undefined | well-defined if modified to CharT() |
[edit]See also
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) |
accesses the specified character (public member function of std::basic_string_view<CharT,Traits> ) |