From cppreference.com
CharT&at(size_typepos); (1)(constexpr since C++20)constCharT&at(size_typepos)const; (2)(constexpr since C++20)Returns a reference to the character at specified location pos. Bounds checking is performed, exception of type
will be thrown on invalid access.
Parameters
pos - position of the character to return Return value
Reference to the requested character.
Exceptions
Throws
if pos>=size().
If an exception is thrown for any reason, these functions have no effect (
strong exception safety guarantee
).
Complexity
Constant.
Example
Run this code
#include<iostream>#include<stdexcept>#include<string>intmain(){std::strings("message");// for capacitys="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:
abx string size = 3 string capacity = 7 basic_string::at Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior
C++98 there was no exception safety guarantee added strong exception safety guarantee
C++98 the behavior was undefined if pos>=size() is truealways throws an exception in this case See also
accesses the specified character
(public member function)
accesses the specified character with bounds checking
(public member function of std::basic_string_view<CharT,Traits>)