std::basic_string<CharT,Traits,Allocator>::at - cppreference.com

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

std::out_of_range

will be thrown on invalid access.

Parameters

pos - position of the character to return Return value

Reference to the requested character.

Exceptions

Throws

std::out_of_range

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

LWG 847

C++98 there was no exception safety guarantee added strong exception safety guarantee

LWG 2207

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)

[edit]

accesses the specified character with bounds checking
(public member function of std::basic_string_view<CharT,Traits>)

[edit]