|
|
|
CharT& at( size_type pos); | (1) | (constexpr since C++20) |
const CharT& at( size_type pos)const; | (2) | (constexpr since C++20) |
Returns a reference to the character at specified locationpos. Bounds checking is performed, exception of typestd::out_of_range will be thrown on invalid access.
Contents |
pos | - | position of the character to return |
Reference to the requested character.
Throwsstd::out_of_range ifpos>= size().
If an exception is thrown for any reason, these functions have no effect (strong exception safety guarantee).
Constant.
#include <iostream>#include <stdexcept>#include <string> int main(){std::string s("message");// for capacity s="abc"; s.at(2)='x';// OKstd::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_rangeconst& exc){std::cout<< exc.what()<<'\n';}}
Possible output:
abxstring size = 3string capacity = 7basic_string::at
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 847 | C++98 | there was no exception safety guarantee | added strong exception safety guarantee |
LWG 2207 | C++98 | the behavior was undefined ifpos>= size() istrue | always throws an exception in this case |
accesses the specified character (public member function)[edit] | |
accesses the specified character with bounds checking (public member function of std::basic_string_view<CharT,Traits> )[edit] |