📄 basic_string.h
字号:
* @return Read-only (const) reference to the character. * @throw std::out_of_range If @a 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. */ const_reference at(size_type __n) const { if (__n >= this->size()) __throw_out_of_range(__N("basic_string::at")); return _M_data()[__n]; } /** * @brief Provides access to the data contained in the %string. * @param n The index of the character to access. * @return Read/write reference to the character. * @throw std::out_of_range If @a 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. */ reference at(size_type __n) { if (__n >= size()) __throw_out_of_range(__N("basic_string::at")); _M_leak(); return _M_data()[__n]; } // Modifiers: /** * @brief Append a string to this string. * @param str The string to append. * @return Reference to this string. */ basic_string& operator+=(const basic_string& __str) { return this->append(__str); } /** * @brief Append a C string. * @param s The C string to append. * @return Reference to this string. */ basic_string& operator+=(const _CharT* __s) { return this->append(__s); } /** * @brief Append a character. * @param c The character to append. * @return Reference to this string. */ basic_string& operator+=(_CharT __c) { this->push_back(__c); return *this; } /** * @brief Append a string to this string. * @param str The string to append. * @return Reference to this string. */ basic_string& append(const basic_string& __str); /** * @brief Append a substring. * @param str The string to append. * @param pos Index of the first character of str to append. * @param n The number of characters to append. * @return Reference to this string. * @throw std::out_of_range if @a pos is not a valid index. * * This function appends @a n characters from @a str starting at @a pos * to this string. If @a n is is larger than the number of available * characters in @a str, the remainder of @a str is appended. */ basic_string& append(const basic_string& __str, size_type __pos, size_type __n); /** * @brief Append a C substring. * @param s The C string to append. * @param n The number of characters to append. * @return Reference to this string. */ basic_string& append(const _CharT* __s, size_type __n); /** * @brief Append a C string. * @param s The C string to append. * @return Reference to this string. */ basic_string& append(const _CharT* __s) { __glibcxx_requires_string(__s); return this->append(__s, traits_type::length(__s)); } /** * @brief Append multiple characters. * @param n The number of characters to append. * @param c The character to use. * @return Reference to this string. * * Appends n copies of c to this string. */ basic_string& append(size_type __n, _CharT __c); /** * @brief Append a range of characters. * @param first Iterator referencing the first character to append. * @param last Iterator marking the end of the range. * @return Reference to this string. * * Appends characters in the range [first,last) to this string. */ template<class _InputIterator> basic_string& append(_InputIterator __first, _InputIterator __last) { return this->replace(_M_iend(), _M_iend(), __first, __last); } /** * @brief Append a single character. * @param c Character to append. */ void push_back(_CharT __c) { const size_type __len = 1 + this->size(); if (__len > this->capacity() || _M_rep()->_M_is_shared()) this->reserve(__len); traits_type::assign(_M_data()[this->size()], __c); _M_rep()->_M_set_length_and_sharable(__len); } /** * @brief Set value to contents of another string. * @param str Source string to use. * @return Reference to this string. */ basic_string& assign(const basic_string& __str); /** * @brief Set value to a substring of a string. * @param str The string to use. * @param pos Index of the first character of str. * @param n Number of characters to use. * @return Reference to this string. * @throw std::out_of_range if @a pos is not a valid index. * * This function sets this string to the substring of @a str consisting * of @a n characters at @a pos. If @a n is is larger than the number * of available characters in @a str, the remainder of @a str is used. */ basic_string& assign(const basic_string& __str, size_type __pos, size_type __n) { return this->assign(__str._M_data() + __str._M_check(__pos, "basic_string::assign"), __str._M_limit(__pos, __n)); } /** * @brief Set value to a C substring. * @param s The C string to use. * @param n Number of characters to use. * @return Reference to this string. * * This function sets the value of this string to the first @a n * characters of @a s. If @a n is is larger than the number of * available characters in @a s, the remainder of @a s is used. */ basic_string& assign(const _CharT* __s, size_type __n); /** * @brief Set value to contents of a C string. * @param s The C string to use. * @return Reference to this string. * * This function sets the value of this string to the value of @a s. * The data is copied, so there is no dependence on @a s once the * function returns. */ basic_string& assign(const _CharT* __s) { __glibcxx_requires_string(__s); return this->assign(__s, traits_type::length(__s)); } /** * @brief Set value to multiple characters. * @param n Length of the resulting string. * @param c The character to use. * @return Reference to this string. * * This function sets the value of this string to @a n copies of * character @a c. */ basic_string& assign(size_type __n, _CharT __c) { return _M_replace_aux(size_type(0), this->size(), __n, __c); } /** * @brief Set value to a range of characters. * @param first Iterator referencing the first character to append. * @param last Iterator marking the end of the range. * @return Reference to this string. * * Sets value of string to characters in the range [first,last). */ template<class _InputIterator> basic_string& assign(_InputIterator __first, _InputIterator __last) { return this->replace(_M_ibegin(), _M_iend(), __first, __last); } /** * @brief Insert multiple characters. * @param p Iterator referencing location in string to insert at. * @param n Number of characters to insert * @param c The character to insert. * @throw std::length_error If new length exceeds @c max_size(). * * Inserts @a n copies of character @a c starting at the position * referenced by iterator @a p. If adding characters causes the length * to exceed max_size(), length_error is thrown. The value of the * string doesn't change if an error is thrown. */ void insert(iterator __p, size_type __n, _CharT __c) { this->replace(__p, __p, __n, __c); } /** * @brief Insert a range of characters. * @param p Iterator referencing location in string to insert at. * @param beg Start of range. * @param end End of range. * @throw std::length_error If new length exceeds @c max_size(). * * Inserts characters in range [beg,end). If adding characters causes * the length to exceed max_size(), length_error is thrown. The value * of the string doesn't change if an error is thrown. */ template<class _InputIterator> void insert(iterator __p, _InputIterator __beg, _InputIterator __end) { this->replace(__p, __p, __beg, __end); } /** * @brief Insert value of a string. * @param pos1 Iterator referencing location in string to insert at. * @param str The string to insert. * @return Reference to this string. * @throw std::length_error If new length exceeds @c max_size(). * * Inserts value of @a str starting at @a pos1. If adding characters * causes the length to exceed max_size(), length_error is thrown. The * value of the string doesn't change if an error is thrown. */ basic_string& insert(size_type __pos1, const basic_string& __str) { return this->insert(__pos1, __str, size_type(0), __str.size()); } /** * @brief Insert a substring. * @param pos1 Iterator referencing location in string to insert at. * @param str The string to insert. * @param pos2 Start of characters in str to insert. * @param n Number of characters to insert. * @return Reference to this string. * @throw std::length_error If new length exceeds @c max_size(). * @throw std::out_of_range If @a pos1 > size() or * @a pos2 > @a str.size(). * * Starting at @a pos1, insert @a n character of @a str beginning with * @a pos2. If adding characters causes the length to exceed * max_size(), length_error is thrown. If @a pos1 is beyond the end of * this string or @a pos2 is beyond the end of @a str, out_of_range is * thrown. The value of the string doesn't change if an error is * thrown. */ basic_string& insert(size_type __pos1, const basic_string& __str, size_type __pos2, size_type __n) { return this->insert(__pos1, __str._M_data() + __str._M_check(__pos2, "basic_string::insert"), __str._M_limit(__pos2, __n)); } /** * @brief Insert a C substring. * @param pos Iterator referencing location in string to insert at. * @param s The C string to insert. * @param n The number of characters to insert. * @return Reference to this string. * @throw std::length_error If new length exceeds @c max_size(). * @throw std::out_of_range If @a pos is beyond the end of this * string. * * Inserts the first @a n characters of @a s starting at @a pos. If * adding characters causes the length to exceed max_size(), * length_error is thrown. If @a pos is beyond end(), out_of_range is * thrown. The value of the string doesn't change if an error is * thrown. */ basic_string& insert(size_type __pos, const _CharT* __s, size_type __n); /** * @brief Insert a C string. * @param pos Iterator referencing location in string to insert at. * @param s The C string to insert. * @return Reference to this string. * @throw std::length_error If new length exceeds @c max_size(). * @throw std::out_of_range If @a pos is beyond the end of this * string. * * Inserts the first @a n characters of @a s starting at @a pos. If * adding characters causes the length to exceed max_size(), * length_error is thrown. If @a pos is beyond end(), out_of_range is * thrown. The value of the string doesn't change if an error is * thrown. */ basic_string& insert(size_type __pos, const _CharT* __s) { __glibcxx_requires_string(__s); return this->insert(__pos, __s, traits_type::length(__s)); } /** * @brief Insert multiple characters. * @param pos Index in string to insert at. * @param n Number of characters to insert * @param c The character to insert. * @return Reference to this string. * @throw std::length_error If new length exceeds @c max_size(). * @throw std::out_of_range If @a pos is beyond the end of this * string. * * Inserts @a n copies of character @a c starting at index @a pos. If * adding characters causes the length to exceed max_size(), * length_error is thrown. If @a pos > length(), out_of_range is * thrown. The value of the string doesn't change if an error is * thrown.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -