libstdc++
std::basic_string< _CharT, _Traits, _Alloc > Class Template Reference

Public Types

typedef _Alloc allocator_type
 
typedef __gnu_cxx::__normal_iterator< const_pointer, basic_stringconst_iterator
 
typedef _CharT_alloc_type::const_pointer const_pointer
 
typedef _CharT_alloc_type::const_reference const_reference
 
typedef std::reverse_iterator< const_iterator > const_reverse_iterator
 
typedef _CharT_alloc_type::difference_type difference_type
 
typedef __gnu_cxx::__normal_iterator< pointer, basic_stringiterator
 
typedef _CharT_alloc_type::pointer pointer
 
typedef _CharT_alloc_type::reference reference
 
typedef std::reverse_iterator< iterator > reverse_iterator
 
typedef _CharT_alloc_type::size_type size_type
 
typedef _Traits traits_type
 
typedef _Traits::char_type value_type
 

Public Member Functions

 basic_string ()
 
 basic_string (const _Alloc &__a)
 
 basic_string (const basic_string &__str)
 
 basic_string (const basic_string &__str, size_type __pos, const _Alloc &__a=_Alloc())
 
 basic_string (const basic_string &__str, size_type __pos, size_type __n)
 
 basic_string (const basic_string &__str, size_type __pos, size_type __n, const _Alloc &__a)
 
 basic_string (const _CharT *__s, size_type __n, const _Alloc &__a=_Alloc())
 
 basic_string (const _CharT *__s, const _Alloc &__a=_Alloc())
 
 basic_string (size_type __n, _CharT __c, const _Alloc &__a=_Alloc())
 
 basic_string (basic_string &&__str) noexcept
 
 basic_string (initializer_list< _CharT > __l, const _Alloc &__a=_Alloc())
 
template<class _InputIterator >
 basic_string (_InputIterator __beg, _InputIterator __end, const _Alloc &__a=_Alloc())
 
 ~basic_string () noexcept
 
template<typename _InputIterator >
basic_string< _CharT, _Traits, _Alloc > & _M_replace_dispatch (iterator __i1, iterator __i2, _InputIterator __k1, _InputIterator __k2, __false_type)
 
template<typename _InIterator >
_CharT * _S_construct (_InIterator __beg, _InIterator __end, const _Alloc &__a, forward_iterator_tag)
 
basic_stringappend (const basic_string &__str)
 
basic_stringappend (const basic_string &__str, size_type __pos, size_type __n)
 
basic_stringappend (const _CharT *__s, size_type __n)
 
basic_stringappend (const _CharT *__s)
 
basic_stringappend (size_type __n, _CharT __c)
 
basic_stringappend (initializer_list< _CharT > __l)
 
template<class _InputIterator >
basic_stringappend (_InputIterator __first, _InputIterator __last)
 
basic_stringassign (const basic_string &__str)
 
basic_stringassign (basic_string &&__str)
 
basic_stringassign (const basic_string &__str, size_type __pos, size_type __n)
 
basic_stringassign (const _CharT *__s, size_type __n)
 
basic_stringassign (const _CharT *__s)
 
basic_stringassign (size_type __n, _CharT __c)
 
template<class _InputIterator >
basic_stringassign (_InputIterator __first, _InputIterator __last)
 
basic_stringassign (initializer_list< _CharT > __l)
 
const_reference at (size_type __n) const
 
reference at (size_type __n)
 
reference back ()
 
const_reference back () const noexcept
 
iterator begin ()
 
const_iterator begin () const noexcept
 
const _CharT * c_str () const noexcept
 
size_type capacity () const noexcept
 
const_iterator cbegin () const noexcept
 
const_iterator cend () const noexcept
 
void clear () noexcept
 
int compare (const basic_string &__str) const
 
int compare (size_type __pos, size_type __n, const basic_string &__str) const
 
int compare (size_type __pos1, size_type __n1, const basic_string &__str, size_type __pos2, size_type __n2) const
 
int compare (const _CharT *__s) const noexcept
 
int compare (size_type __pos, size_type __n1, const _CharT *__s) const
 
int compare (size_type __pos, size_type __n1, const _CharT *__s, size_type __n2) const
 
size_type copy (_CharT *__s, size_type __n, size_type __pos=0) const
 
const_reverse_iterator crbegin () const noexcept
 
const_reverse_iterator crend () const noexcept
 
const _CharT * data () const noexcept
 
bool empty () const noexcept
 
iterator end ()
 
const_iterator end () const noexcept
 
basic_stringerase (size_type __pos=0, size_type __n=npos)
 
iterator erase (iterator __position)
 
iterator erase (iterator __first, iterator __last)
 
size_type find (const _CharT *__s, size_type __pos, size_type __n) const noexcept
 
size_type find (const basic_string &__str, size_type __pos=0) const noexcept
 
size_type find (const _CharT *__s, size_type __pos=0) const noexcept
 
size_type find (_CharT __c, size_type __pos=0) const noexcept
 
size_type find_first_not_of (const basic_string &__str, size_type __pos=0) const noexcept
 
size_type find_first_not_of (const _CharT *__s, size_type __pos, size_type __n) const noexcept
 
size_type find_first_not_of (const _CharT *__s, size_type __pos=0) const noexcept
 
size_type find_first_not_of (_CharT __c, size_type __pos=0) const noexcept
 
size_type find_first_of (const basic_string &__str, size_type __pos=0) const noexcept
 
size_type find_first_of (const _CharT *__s, size_type __pos, size_type __n) const noexcept
 
size_type find_first_of (const _CharT *__s, size_type __pos=0) const noexcept
 
size_type find_first_of (_CharT __c, size_type __pos=0) const noexcept
 
size_type find_last_not_of (const basic_string &__str, size_type __pos=npos) const noexcept
 
size_type find_last_not_of (const _CharT *__s, size_type __pos, size_type __n) const noexcept
 
size_type find_last_not_of (const _CharT *__s, size_type __pos=npos) const noexcept
 
size_type find_last_not_of (_CharT __c, size_type __pos=npos) const noexcept
 
size_type find_last_of (const basic_string &__str, size_type __pos=npos) const noexcept
 
size_type find_last_of (const _CharT *__s, size_type __pos, size_type __n) const noexcept
 
size_type find_last_of (const _CharT *__s, size_type __pos=npos) const noexcept
 
size_type find_last_of (_CharT __c, size_type __pos=npos) const noexcept
 
reference front ()
 
const_reference front () const noexcept
 
allocator_type get_allocator () const noexcept
 
void insert (iterator __p, size_type __n, _CharT __c)
 
template<class _InputIterator >
void insert (iterator __p, _InputIterator __beg, _InputIterator __end)
 
void insert (iterator __p, initializer_list< _CharT > __l)
 
basic_stringinsert (size_type __pos1, const basic_string &__str)
 
basic_stringinsert (size_type __pos1, const basic_string &__str, size_type __pos2, size_type __n)
 
basic_stringinsert (size_type __pos, const _CharT *__s, size_type __n)
 
basic_stringinsert (size_type __pos, const _CharT *__s)
 
basic_stringinsert (size_type __pos, size_type __n, _CharT __c)
 
iterator insert (iterator __p, _CharT __c)
 
size_type length () const noexcept
 
size_type max_size () const noexcept
 
basic_stringoperator+= (const basic_string &__str)
 
basic_stringoperator+= (const _CharT *__s)
 
basic_stringoperator+= (_CharT __c)
 
basic_stringoperator+= (initializer_list< _CharT > __l)
 
basic_stringoperator= (const basic_string &__str)
 
basic_stringoperator= (const _CharT *__s)
 
basic_stringoperator= (_CharT __c)
 
basic_stringoperator= (basic_string &&__str)
 
basic_stringoperator= (initializer_list< _CharT > __l)
 
const_reference operator[] (size_type __pos) const noexcept
 
reference operator[] (size_type __pos)
 
void pop_back ()
 
void push_back (_CharT __c)
 
reverse_iterator rbegin ()
 
const_reverse_iterator rbegin () const noexcept
 
reverse_iterator rend ()
 
const_reverse_iterator rend () const noexcept
 
basic_stringreplace (size_type __pos, size_type __n, const basic_string &__str)
 
basic_stringreplace (size_type __pos1, size_type __n1, const basic_string &__str, size_type __pos2, size_type __n2)
 
basic_stringreplace (size_type __pos, size_type __n1, const _CharT *__s, size_type __n2)
 
basic_stringreplace (size_type __pos, size_type __n1, const _CharT *__s)
 
basic_stringreplace (size_type __pos, size_type __n1, size_type __n2, _CharT __c)
 
basic_stringreplace (iterator __i1, iterator __i2, const basic_string &__str)
 
basic_stringreplace (iterator __i1, iterator __i2, const _CharT *__s, size_type __n)
 
basic_stringreplace (iterator __i1, iterator __i2, const _CharT *__s)
 
basic_stringreplace (iterator __i1, iterator __i2, size_type __n, _CharT __c)
 
template<class _InputIterator >
basic_stringreplace (iterator __i1, iterator __i2, _InputIterator __k1, _InputIterator __k2)
 
basic_stringreplace (iterator __i1, iterator __i2, _CharT *__k1, _CharT *__k2)
 
basic_stringreplace (iterator __i1, iterator __i2, const _CharT *__k1, const _CharT *__k2)
 
basic_stringreplace (iterator __i1, iterator __i2, iterator __k1, iterator __k2)
 
basic_stringreplace (iterator __i1, iterator __i2, const_iterator __k1, const_iterator __k2)
 
basic_stringreplace (iterator __i1, iterator __i2, initializer_list< _CharT > __l)
 
void reserve (size_type __res_arg=0)
 
void resize (size_type __n, _CharT __c)
 
void resize (size_type __n)
 
size_type rfind (const basic_string &__str, size_type __pos=npos) const noexcept
 
size_type rfind (const _CharT *__s, size_type __pos, size_type __n) const noexcept
 
size_type rfind (const _CharT *__s, size_type __pos=npos) const noexcept
 
size_type rfind (_CharT __c, size_type __pos=npos) const noexcept
 
void shrink_to_fit () noexcept
 
size_type size () const noexcept
 
basic_string substr (size_type __pos=0, size_type __n=npos) const
 
void swap (basic_string &__s)
 

Static Public Attributes

static const size_type npos
 

Detailed Description

template<typename _CharT, typename _Traits, typename _Alloc>
class std::basic_string< _CharT, _Traits, _Alloc >

Managing sequences of characters and character-like objects.

Template Parameters
_CharTType of character
_TraitsTraits for character type, defaults to char_traits<_CharT>.
_AllocAllocator type, defaults to allocator<_CharT>.

Meets the requirements of a container, a reversible container, and a sequence. Of the optional sequence requirements, only push_back, at, and array access are supported.

Todo:
Needs documentation! See http://gcc.gnu.org/onlinedocs/libstdc++/manual/documentation_style.html

Documentation? What's that? Nathan Myers ncm@c.nosp@m.antr.nosp@m.ip.or.nosp@m.g.

A string looks like this:

[_Rep]
_M_length
[basic_string<char_type>] _M_capacity
_M_dataplus _M_refcount
_M_p ----------------> unnamed array of char_type

Where the _M_p points to the first character in the string, and you cast it to a pointer-to-_Rep and subtract 1 to get a pointer to the header.

This approach has the enormous advantage that a string object requires only one allocation. All the ugliness is confined within a single pair of inline functions, which each compile to a single add instruction: _Rep::_M_data(), and string::_M_rep(); and the allocation function which gets a block of raw bytes and with room enough and constructs a _Rep object at the front.

The reason you want _M_data pointing to the character array and not the _Rep is so that the debugger can see the string contents. (Probably we should add a non-inline member to get the _Rep for the debugger to use, so users can check the actual string length.)

Note that the _Rep object is a POD so that you can have a static empty string _Rep object already constructed before static constructors have run. The reference-count encoding is chosen so that a 0 indicates one reference, so you never try to destroy the empty-string _Rep object.

All but the last paragraph is considered pretty conventional for a C++ string implementation.

Definition at line 3085 of file basic_string.h.

Constructor & Destructor Documentation

◆ basic_string() [1/12]

template<typename _CharT, typename _Traits, typename _Alloc>
std::basic_string< _CharT, _Traits, _Alloc >::basic_string ( )
inline

Default constructor creates an empty string.

Definition at line 3470 of file basic_string.h.

Referenced by std::basic_string< char >::basic_string(), and std::basic_string< char >::substr().

◆ basic_string() [2/12]

template<typename _CharT , typename _Traits , typename _Alloc>
std::basic_string< _CharT, _Traits, _Alloc >::basic_string ( const _Alloc &  __a)
explicit

Construct an empty string using allocator a.

Definition at line 618 of file basic_string.tcc.

◆ basic_string() [3/12]

template<typename _CharT , typename _Traits , typename _Alloc>
std::basic_string< _CharT, _Traits, _Alloc >::basic_string ( const basic_string< _CharT, _Traits, _Alloc > &  __str)

Construct string with copy of value of str.

Parameters
__strSource string.

Definition at line 610 of file basic_string.tcc.

◆ basic_string() [4/12]

template<typename _CharT , typename _Traits , typename _Alloc>
std::basic_string< _CharT, _Traits, _Alloc >::basic_string ( const basic_string< _CharT, _Traits, _Alloc > &  __str,
size_type  __pos,
const _Alloc &  __a = _Alloc() 
)

Construct string as copy of a substring.

Parameters
__strSource string.
__posIndex of first character to copy from.
__aAllocator to use.

Definition at line 624 of file basic_string.tcc.

◆ basic_string() [5/12]

template<typename _CharT , typename _Traits , typename _Alloc>
std::basic_string< _CharT, _Traits, _Alloc >::basic_string ( const basic_string< _CharT, _Traits, _Alloc > &  __str,
size_type  __pos,
size_type  __n 
)

Construct string as copy of a substring.

Parameters
__strSource string.
__posIndex of first character to copy from.
__nNumber of characters to copy.

Definition at line 634 of file basic_string.tcc.

◆ basic_string() [6/12]

template<typename _CharT , typename _Traits , typename _Alloc>
std::basic_string< _CharT, _Traits, _Alloc >::basic_string ( const basic_string< _CharT, _Traits, _Alloc > &  __str,
size_type  __pos,
size_type  __n,
const _Alloc &  __a 
)

Construct string as copy of a substring.

Parameters
__strSource string.
__posIndex of first character to copy from.
__nNumber of characters to copy.
__aAllocator to use.

Definition at line 644 of file basic_string.tcc.

◆ basic_string() [7/12]

template<typename _CharT, typename _Traits , typename _Alloc>
std::basic_string< _CharT, _Traits, _Alloc >::basic_string ( const _CharT *  __s,
size_type  __n,
const _Alloc &  __a = _Alloc() 
)

Construct string initialized by a character array.

Parameters
__sSource character array.
__nNumber of characters to copy.
__aAllocator to use (default is default allocator).

NB: __s must have at least __n characters, '\0' has no special meaning.

Definition at line 656 of file basic_string.tcc.

◆ basic_string() [8/12]

template<typename _CharT, typename _Traits , typename _Alloc>
std::basic_string< _CharT, _Traits, _Alloc >::basic_string ( const _CharT *  __s,
const _Alloc &  __a = _Alloc() 
)

Construct string as copy of a C string.

Parameters
__sSource C string.
__aAllocator to use (default is default allocator).

Definition at line 663 of file basic_string.tcc.

◆ basic_string() [9/12]

template<typename _CharT, typename _Traits , typename _Alloc>
std::basic_string< _CharT, _Traits, _Alloc >::basic_string ( size_type  __n,
_CharT  __c,
const _Alloc &  __a = _Alloc() 
)

Construct string as multiple characters.

Parameters
__nNumber of characters.
__cCharacter to use.
__aAllocator to use (default is default allocator).

Definition at line 670 of file basic_string.tcc.

◆ basic_string() [10/12]

template<typename _CharT, typename _Traits, typename _Alloc>
std::basic_string< _CharT, _Traits, _Alloc >::basic_string ( basic_string< _CharT, _Traits, _Alloc > &&  __str)
inlinenoexcept

Move construct string.

Parameters
__strSource string.

The newly-created string contains the exact contents of __str. __str is a valid, but unspecified string.

Definition at line 3552 of file basic_string.h.

◆ basic_string() [11/12]

template<typename _CharT, typename _Traits , typename _Alloc>
std::basic_string< _CharT, _Traits, _Alloc >::basic_string ( initializer_list< _CharT >  __l,
const _Alloc &  __a = _Alloc() 
)

Construct string from an initializer list.

Parameters
__lstd::initializer_list of characters.
__aAllocator to use (default is default allocator).

Definition at line 685 of file basic_string.tcc.

◆ basic_string() [12/12]

template<typename _CharT , typename _Traits , typename _Alloc>
template<typename _InputIterator >
std::basic_string< _CharT, _Traits, _Alloc >::basic_string ( _InputIterator  __beg,
_InputIterator  __end,
const _Alloc &  __a = _Alloc() 
)

Construct string as copy of a range.

Parameters
__begStart of range.
__endEnd of range.
__aAllocator to use (default is default allocator).

Definition at line 678 of file basic_string.tcc.

◆ ~basic_string()

template<typename _CharT, typename _Traits, typename _Alloc>
std::basic_string< _CharT, _Traits, _Alloc >::~basic_string ( )
inlinenoexcept

Destroy the string instance.

Definition at line 3620 of file basic_string.h.

Member Function Documentation

◆ append() [1/7]

template<typename _CharT , typename _Traits , typename _Alloc >
basic_string< _CharT, _Traits, _Alloc > & std::basic_string< _CharT, _Traits, _Alloc >::append ( const basic_string< _CharT, _Traits, _Alloc > &  __str)

Append a string to this string.

Parameters
__strThe string to append.
Returns
Reference to this string.

Definition at line 775 of file basic_string.tcc.

Referenced by std::basic_string< char >::append(), std::money_get< _CharT, _InIter >::do_get(), and std::basic_string< char >::operator+=().

◆ append() [2/7]

template<typename _CharT , typename _Traits , typename _Alloc >
basic_string< _CharT, _Traits, _Alloc > & std::basic_string< _CharT, _Traits, _Alloc >::append ( const basic_string< _CharT, _Traits, _Alloc > &  __str,
size_type  __pos,
size_type  __n 
)

Append a substring.

Parameters
__strThe string to append.
__posIndex of the first character of str to append.
__nThe number of characters to append.
Returns
Reference to this string.
Exceptions
std::out_of_rangeif __pos is not a valid index.

This function appends __n characters from __str starting at __pos to this string. If __n is is larger than the number of available characters in __str, the remainder of __str is appended.

Definition at line 792 of file basic_string.tcc.

◆ append() [3/7]

template<typename _CharT, typename _Traits , typename _Alloc >
basic_string< _CharT, _Traits, _Alloc > & std::basic_string< _CharT, _Traits, _Alloc >::append ( const _CharT *  __s,
size_type  __n 
)

Append a C substring.

Parameters
__sThe C string to append.
__nThe number of characters to append.
Returns
Reference to this string.

Definition at line 748 of file basic_string.tcc.

◆ append() [4/7]

template<typename _CharT, typename _Traits, typename _Alloc>
basic_string& std::basic_string< _CharT, _Traits, _Alloc >::append ( const _CharT *  __s)
inline

Append a C string.

Parameters
__sThe C string to append.
Returns
Reference to this string.

Definition at line 4155 of file basic_string.h.

◆ append() [5/7]

template<typename _CharT, typename _Traits , typename _Alloc >
basic_string< _CharT, _Traits, _Alloc > & std::basic_string< _CharT, _Traits, _Alloc >::append ( size_type  __n,
_CharT  __c 
)

Append multiple characters.

Parameters
__nThe number of characters to append.
__cThe character to use.
Returns
Reference to this string.

Appends __n copies of __c to this string.

Definition at line 731 of file basic_string.tcc.

◆ append() [6/7]

template<typename _CharT, typename _Traits, typename _Alloc>
basic_string& std::basic_string< _CharT, _Traits, _Alloc >::append ( initializer_list< _CharT >  __l)
inline

Append an initializer_list of characters.

Parameters
__lThe initializer_list of characters to append.
Returns
Reference to this string.

Definition at line 4179 of file basic_string.h.

◆ append() [7/7]

template<typename _CharT, typename _Traits, typename _Alloc>
template<class _InputIterator >
basic_string& std::basic_string< _CharT, _Traits, _Alloc >::append ( _InputIterator  __first,
_InputIterator  __last 
)
inline

Append a range of characters.

Parameters
__firstIterator referencing the first character to append.
__lastIterator marking the end of the range.
Returns
Reference to this string.

Appends characters in the range [__first,__last) to this string.

Definition at line 4193 of file basic_string.h.

◆ assign() [1/8]

template<typename _CharT , typename _Traits , typename _Alloc >
basic_string< _CharT, _Traits, _Alloc > & std::basic_string< _CharT, _Traits, _Alloc >::assign ( const basic_string< _CharT, _Traits, _Alloc > &  __str)

Set value to contents of another string.

Parameters
__strSource string to use.
Returns
Reference to this string.

Definition at line 693 of file basic_string.tcc.

Referenced by std::basic_string< char >::assign(), std::money_get< _CharT, _InIter >::do_get(), std::basic_string< char >::operator=(), std::basic_string< char >::push_back(), and std::basic_stringbuf< _CharT, _Traits, _Alloc >::str().

◆ assign() [2/8]

template<typename _CharT, typename _Traits, typename _Alloc>
basic_string& std::basic_string< _CharT, _Traits, _Alloc >::assign ( basic_string< _CharT, _Traits, _Alloc > &&  __str)
inline

Set value to contents of another string.

Parameters
__strSource string to use.
Returns
Reference to this string.

This function sets this string to the exact contents of __str. __str is a valid, but unspecified string.

Definition at line 4262 of file basic_string.h.

◆ assign() [3/8]

template<typename _CharT, typename _Traits, typename _Alloc>
basic_string& std::basic_string< _CharT, _Traits, _Alloc >::assign ( const basic_string< _CharT, _Traits, _Alloc > &  __str,
size_type  __pos,
size_type  __n 
)
inline

Set value to a substring of a string.

Parameters
__strThe string to use.
__posIndex of the first character of str.
__nNumber of characters to use.
Returns
Reference to this string.
Exceptions
std::out_of_rangeif pos is not a valid index.

This function sets this string to the substring of __str consisting of __n characters at __pos. If __n is is larger than the number of available characters in __str, the remainder of __str is used.

Definition at line 4283 of file basic_string.h.

◆ assign() [4/8]

template<typename _CharT, typename _Traits , typename _Alloc >
basic_string< _CharT, _Traits, _Alloc > & std::basic_string< _CharT, _Traits, _Alloc >::assign ( const _CharT *  __s,
size_type  __n 
)

Set value to a C substring.

Parameters
__sThe C string to use.
__nNumber of characters to use.
Returns
Reference to this string.

This function sets the value of this string to the first __n characters of __s. If __n is is larger than the number of available characters in __s, the remainder of __s is used.

Definition at line 709 of file basic_string.tcc.

◆ assign() [5/8]

template<typename _CharT, typename _Traits, typename _Alloc>
basic_string& std::basic_string< _CharT, _Traits, _Alloc >::assign ( const _CharT *  __s)
inline

Set value to contents of a C string.

Parameters
__sThe C string to use.
Returns
Reference to this string.

This function sets the value of this string to the value of __s. The data is copied, so there is no dependence on __s once the function returns.

Definition at line 4311 of file basic_string.h.

◆ assign() [6/8]

template<typename _CharT, typename _Traits, typename _Alloc>
basic_string& std::basic_string< _CharT, _Traits, _Alloc >::assign ( size_type  __n,
_CharT  __c 
)
inline

Set value to multiple characters.

Parameters
__nLength of the resulting string.
__cThe character to use.
Returns
Reference to this string.

This function sets the value of this string to __n copies of character __c.

Definition at line 4327 of file basic_string.h.

◆ assign() [7/8]

template<typename _CharT, typename _Traits, typename _Alloc>
template<class _InputIterator >
basic_string& std::basic_string< _CharT, _Traits, _Alloc >::assign ( _InputIterator  __first,
_InputIterator  __last 
)
inline

Set value to a range of characters.

Parameters
__firstIterator referencing the first character to append.
__lastIterator marking the end of the range.
Returns
Reference to this string.

Sets value of string to characters in the range [__first,__last).

Definition at line 4340 of file basic_string.h.

◆ assign() [8/8]

template<typename _CharT, typename _Traits, typename _Alloc>
basic_string& std::basic_string< _CharT, _Traits, _Alloc >::assign ( initializer_list< _CharT >  __l)
inline

Set value to an initializer_list of characters.

Parameters
__lThe initializer_list of characters to assign.
Returns
Reference to this string.

Definition at line 4350 of file basic_string.h.

◆ at() [1/2]

template<typename _CharT, typename _Traits, typename _Alloc>
const_reference std::basic_string< _CharT, _Traits, _Alloc >::at ( size_type  __n) const
inline

Provides access to the data contained in the string.

Parameters
__nThe index of the character to access.
Returns
Read-only (const) reference to the character.
Exceptions
std::out_of_rangeIf n is an invalid index.

This function provides for safer data access. The parameter is first checked that it is in the range of the string. The function throws out_of_range if the check fails.

Definition at line 3983 of file basic_string.h.

◆ at() [2/2]

template<typename _CharT, typename _Traits, typename _Alloc>
reference std::basic_string< _CharT, _Traits, _Alloc >::at ( size_type  __n)
inline

Provides access to the data contained in the string.

Parameters
__nThe index of the character to access.
Returns
Read/write reference to the character.
Exceptions
std::out_of_rangeIf n is an invalid index.

This function provides for safer data access. The parameter is first checked that it is in the range of the string. The function throws out_of_range if the check fails. Success results in unsharing the string.

Definition at line 4005 of file basic_string.h.

◆ back() [1/2]

template<typename _CharT, typename _Traits, typename _Alloc>
reference std::basic_string< _CharT, _Traits, _Alloc >::back ( )
inline

Returns a read/write reference to the data at the last element of the string.

Definition at line 4044 of file basic_string.h.

◆ back() [2/2]

template<typename _CharT, typename _Traits, typename _Alloc>
const_reference std::basic_string< _CharT, _Traits, _Alloc >::back ( ) const
inlinenoexcept

Returns a read-only (constant) reference to the data at the last element of the string.

Definition at line 4055 of file basic_string.h.

◆ begin() [1/2]

template<typename _CharT, typename _Traits, typename _Alloc>
iterator std::basic_string< _CharT, _Traits, _Alloc >::begin ( )
inline

Returns a read/write iterator that points to the first character in the string. Unshares the string.

Definition at line 3706 of file basic_string.h.

Referenced by std::basic_string< char >::crend(), std::regex_match(), std::regex_replace(), std::regex_search(), std::basic_string< char >::rend(), and std::basic_string< char >::replace().

◆ begin() [2/2]

template<typename _CharT, typename _Traits, typename _Alloc>
const_iterator std::basic_string< _CharT, _Traits, _Alloc >::begin ( ) const
inlinenoexcept

Returns a read-only (constant) iterator that points to the first character in the string.

Definition at line 3717 of file basic_string.h.

◆ c_str()

template<typename _CharT, typename _Traits, typename _Alloc>
const _CharT* std::basic_string< _CharT, _Traits, _Alloc >::c_str ( ) const
inlinenoexcept

◆ capacity()

template<typename _CharT, typename _Traits, typename _Alloc>
size_type std::basic_string< _CharT, _Traits, _Alloc >::capacity ( ) const
inlinenoexcept

Returns the total number of characters that the string can hold before needing to allocate more memory.

Definition at line 3879 of file basic_string.h.

Referenced by std::basic_string< char >::push_back(), and std::basic_string< char >::shrink_to_fit().

◆ cbegin()

template<typename _CharT, typename _Traits, typename _Alloc>
const_iterator std::basic_string< _CharT, _Traits, _Alloc >::cbegin ( ) const
inlinenoexcept

Returns a read-only (constant) iterator that points to the first character in the string.

Definition at line 3781 of file basic_string.h.

◆ cend()

template<typename _CharT, typename _Traits, typename _Alloc>
const_iterator std::basic_string< _CharT, _Traits, _Alloc >::cend ( ) const
inlinenoexcept

Returns a read-only (constant) iterator that points one past the last character in the string.

Definition at line 3789 of file basic_string.h.

◆ clear()

template<typename _CharT, typename _Traits, typename _Alloc>
void std::basic_string< _CharT, _Traits, _Alloc >::clear ( )
inlinenoexcept

Erases the string, making it empty.

Definition at line 3907 of file basic_string.h.

Referenced by std::basic_string< char >::clear(), and std::basic_stringbuf< _CharT, _Traits, _Alloc >::setbuf().

◆ compare() [1/6]

template<typename _CharT, typename _Traits, typename _Alloc>
int std::basic_string< _CharT, _Traits, _Alloc >::compare ( const basic_string< _CharT, _Traits, _Alloc > &  __str) const
inline

Compare to a string.

Parameters
__strString to compare against.
Returns
Integer < 0, 0, or > 0.

Returns an integer < 0 if this string is ordered before __str, 0 if their values are equivalent, or > 0 if this string is ordered after __str. Determines the effective length rlen of the strings to compare as the smallest of size() and str.size(). The function then compares the two strings by calling traits::compare(data(), str.data(),rlen). If the result of the comparison is nonzero returns it, otherwise the shorter one is ordered first.

Definition at line 5662 of file basic_string.h.

Referenced by std::basic_string< char >::compare(), std::operator<(), and std::operator<=().

◆ compare() [2/6]

template<typename _CharT , typename _Traits , typename _Alloc >
int std::basic_string< _CharT, _Traits, _Alloc >::compare ( size_type  __pos,
size_type  __n,
const basic_string< _CharT, _Traits, _Alloc > &  __str 
) const

Compare substring to a string.

Parameters
__posIndex of first character of substring.
__nNumber of characters in substring.
__strString to compare against.
Returns
Integer < 0, 0, or > 0.

Form the substring of this string from the __n characters starting at __pos. Returns an integer < 0 if the substring is ordered before __str, 0 if their values are equivalent, or > 0 if the substring is ordered after __str. Determines the effective length rlen of the strings to compare as the smallest of the length of the substring and __str.size(). The function then compares the two strings by calling traits::compare(substring.data(),str.data(),rlen). If the result of the comparison is nonzero returns it, otherwise the shorter one is ordered first.

Definition at line 1385 of file basic_string.tcc.

◆ compare() [3/6]

template<typename _CharT , typename _Traits , typename _Alloc >
int std::basic_string< _CharT, _Traits, _Alloc >::compare ( size_type  __pos1,
size_type  __n1,
const basic_string< _CharT, _Traits, _Alloc > &  __str,
size_type  __pos2,
size_type  __n2 
) const

Compare substring to a substring.

Parameters
__pos1Index of first character of substring.
__n1Number of characters in substring.
__strString to compare against.
__pos2Index of first character of substring of str.
__n2Number of characters in substring of str.
Returns
Integer < 0, 0, or > 0.

Form the substring of this string from the __n1 characters starting at __pos1. Form the substring of __str from the __n2 characters starting at __pos2. Returns an integer < 0 if this substring is ordered before the substring of __str, 0 if their values are equivalent, or > 0 if this substring is ordered after the substring of __str. Determines the effective length rlen of the strings to compare as the smallest of the lengths of the substrings. The function then compares the two strings by calling traits::compare(substring.data(),str.substr(pos2,n2).data(),rlen). If the result of the comparison is nonzero returns it, otherwise the shorter one is ordered first.

Definition at line 1400 of file basic_string.tcc.

◆ compare() [4/6]

template<typename _CharT, typename _Traits , typename _Alloc >
int std::basic_string< _CharT, _Traits, _Alloc >::compare ( const _CharT *  __s) const
noexcept

Compare to a C string.

Parameters
__sC string to compare against.
Returns
Integer < 0, 0, or > 0.

Returns an integer < 0 if this string is ordered before __s, 0 if their values are equivalent, or > 0 if this string is ordered after __s. Determines the effective length rlen of the strings to compare as the smallest of size() and the length of a string constructed from __s. The function then compares the two strings by calling traits::compare(data(),s,rlen). If the result of the comparison is nonzero returns it, otherwise the shorter one is ordered first.

Definition at line 1418 of file basic_string.tcc.

◆ compare() [5/6]

template<typename _CharT, typename _Traits , typename _Alloc >
int std::basic_string< _CharT, _Traits, _Alloc >::compare ( size_type  __pos,
size_type  __n1,
const _CharT *  __s 
) const

Compare substring to a C string.

Parameters
__posIndex of first character of substring.
__n1Number of characters in substring.
__sC string to compare against.
Returns
Integer < 0, 0, or > 0.

Form the substring of this string from the __n1 characters starting at pos. Returns an integer < 0 if the substring is ordered before __s, 0 if their values are equivalent, or > 0 if the substring is ordered after __s. Determines the effective length rlen of the strings to compare as the smallest of the length of the substring and the length of a string constructed from __s. The function then compares the two string by calling traits::compare(substring.data(),__s,rlen). If the result of the comparison is nonzero returns it, otherwise the shorter one is ordered first.

Definition at line 1433 of file basic_string.tcc.

◆ compare() [6/6]

template<typename _CharT, typename _Traits , typename _Alloc >
int std::basic_string< _CharT, _Traits, _Alloc >::compare ( size_type  __pos,
size_type  __n1,
const _CharT *  __s,
size_type  __n2 
) const

Compare substring against a character array.

Parameters
__posIndex of first character of substring.
__n1Number of characters in substring.
__scharacter array to compare against.
__n2Number of characters of s.
Returns
Integer < 0, 0, or > 0.

Form the substring of this string from the __n1 characters starting at __pos. Form a string from the first __n2 characters of __s. Returns an integer < 0 if this substring is ordered before the string from __s, 0 if their values are equivalent, or > 0 if this substring is ordered after the string from __s. Determines the effective length rlen of the strings to compare as the smallest of the length of the substring and __n2. The function then compares the two strings by calling traits::compare(substring.data(),s,rlen). If the result of the comparison is nonzero returns it, otherwise the shorter one is ordered first.

NB: s must have at least n2 characters, '\0' has no special meaning.

Definition at line 1449 of file basic_string.tcc.

◆ copy()

template<typename _CharT, typename _Traits , typename _Alloc >
basic_string< _CharT, _Traits, _Alloc >::size_type std::basic_string< _CharT, _Traits, _Alloc >::copy ( _CharT *  __s,
size_type  __n,
size_type  __pos = 0 
) const

Copy substring into C string.

Parameters
__sC string to copy value into.
__nNumber of characters to copy.
__posIndex of first character to copy.
Returns
Number of characters actually copied
Exceptions
std::out_of_rangeIf __pos > size().

Copies up to __n characters starting at __pos into the C string __s. If __pos is greater than size(), out_of_range is thrown.

Definition at line 1143 of file basic_string.tcc.

◆ crbegin()

template<typename _CharT, typename _Traits, typename _Alloc>
const_reverse_iterator std::basic_string< _CharT, _Traits, _Alloc >::crbegin ( ) const
inlinenoexcept

Returns a read-only (constant) reverse iterator that points to the last character in the string. Iteration is done in reverse element order.

Definition at line 3798 of file basic_string.h.

◆ crend()

template<typename _CharT, typename _Traits, typename _Alloc>
const_reverse_iterator std::basic_string< _CharT, _Traits, _Alloc >::crend ( ) const
inlinenoexcept

Returns a read-only (constant) reverse iterator that points to one before the first character in the string. Iteration is done in reverse element order.

Definition at line 3807 of file basic_string.h.

◆ data()

template<typename _CharT, typename _Traits, typename _Alloc>
const _CharT* std::basic_string< _CharT, _Traits, _Alloc >::data ( ) const
inlinenoexcept

◆ empty()

template<typename _CharT, typename _Traits, typename _Alloc>
bool std::basic_string< _CharT, _Traits, _Alloc >::empty ( ) const
inlinenoexcept

Returns true if the string is empty. Equivalent to *this == "".

Definition at line 3929 of file basic_string.h.

◆ end() [1/2]

template<typename _CharT, typename _Traits, typename _Alloc>
iterator std::basic_string< _CharT, _Traits, _Alloc >::end ( )
inline

Returns a read/write iterator that points one past the last character in the string. Unshares the string.

Definition at line 3725 of file basic_string.h.

Referenced by std::basic_string< char >::crbegin(), std::basic_string< char >::rbegin(), std::regex_match(), std::regex_replace(), and std::regex_search().

◆ end() [2/2]

template<typename _CharT, typename _Traits, typename _Alloc>
const_iterator std::basic_string< _CharT, _Traits, _Alloc >::end ( ) const
inlinenoexcept

Returns a read-only (constant) iterator that points one past the last character in the string.

Definition at line 3736 of file basic_string.h.

◆ erase() [1/3]

template<typename _CharT, typename _Traits, typename _Alloc>
.an class="overload">[1/3]
template<typename _CharT, typenl" href="a00293_source.html">basic_string.tcc.

template<typename _CharT, typename _Traits, typename _Alloc>

basic_string& std::basic_string< _CharT, _Traits, _Alloc >::erase ( size_type  __pos = 0,
size_type  __n = npos 
) ab202e90e1c18c2~¡el" href="a04776.html">std::basic_string< _CharT, _Traits, _Alloc >::erase (