⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic_string.h

📁 linux下编程用 编译软件
💻 H
📖 第 1 页 / 共 5 页
字号:
      */      basic_string&      insert(size_type __pos, size_type __n, _CharT __c)      { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),			      size_type(0), __n, __c); }      /**       *  @brief  Insert one character.       *  @param p  Iterator referencing position in string to insert at.       *  @param c  The character to insert.       *  @return  Iterator referencing newly inserted char.       *  @throw  std::length_error  If new length exceeds @c max_size().       *       *  Inserts character @a c at position referenced by @a p.  If adding       *  character causes the length to exceed max_size(), length_error is       *  thrown.  If @a p is beyond end of string, out_of_range is thrown.       *  The value of the string doesn't change if an error is thrown.      */      iterator      insert(iterator __p, _CharT __c)      {	_GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend());	const size_type __pos = __p - _M_ibegin();	_M_replace_aux(__pos, size_type(0), size_type(1), __c);	_M_rep()->_M_set_leaked();	return this->_M_ibegin() + __pos;      }      /**       *  @brief  Remove characters.       *  @param pos  Index of first character to remove (default 0).       *  @param n  Number of characters to remove (default remainder).       *  @return  Reference to this string.       *  @throw  std::out_of_range  If @a pos is beyond the end of this       *  string.       *       *  Removes @a n characters from this string starting at @a pos.  The       *  length of the string is reduced by @a n.  If there are < @a n       *  characters to remove, the remainder of the string is truncated.  If       *  @a p is beyond end of string, out_of_range is thrown.  The value of       *  the string doesn't change if an error is thrown.      */      basic_string&      erase(size_type __pos = 0, size_type __n = npos)      { 	_M_mutate(_M_check(__pos, "basic_string::erase"),		  _M_limit(__pos, __n), size_type(0));	return *this;      }      /**       *  @brief  Remove one character.       *  @param position  Iterator referencing the character to remove.       *  @return  iterator referencing same location after removal.       *       *  Removes the character at @a position from this string. The value       *  of the string doesn't change if an error is thrown.      */      iterator      erase(iterator __position)      {	_GLIBCXX_DEBUG_PEDASSERT(__position >= _M_ibegin()				 && __position < _M_iend());	const size_type __pos = __position - _M_ibegin();	_M_mutate(__pos, size_type(1), size_type(0));	_M_rep()->_M_set_leaked();	return _M_ibegin() + __pos;      }      /**       *  @brief  Remove a range of characters.       *  @param first  Iterator referencing the first character to remove.       *  @param last  Iterator referencing the end of the range.       *  @return  Iterator referencing location of first after removal.       *       *  Removes the characters in the range [first,last) from this string.       *  The value of the string doesn't change if an error is thrown.      */      iterator      erase(iterator __first, iterator __last)      {	_GLIBCXX_DEBUG_PEDASSERT(__first >= _M_ibegin() && __first <= __last				 && __last <= _M_iend());        const size_type __pos = __first - _M_ibegin();	_M_mutate(__pos, __last - __first, size_type(0));	_M_rep()->_M_set_leaked();	return _M_ibegin() + __pos;      }      /**       *  @brief  Replace characters with value from another string.       *  @param pos  Index of first character to replace.       *  @param n  Number of characters to be replaced.       *  @param str  String to insert.       *  @return  Reference to this string.       *  @throw  std::out_of_range  If @a pos is beyond the end of this       *  string.       *  @throw  std::length_error  If new length exceeds @c max_size().       *       *  Removes the characters in the range [pos,pos+n) from this string.       *  In place, the value of @a str is inserted.  If @a pos is beyond end       *  of string, out_of_range is thrown.  If the length of the result       *  exceeds max_size(), length_error is thrown.  The value of the string       *  doesn't change if an error is thrown.      */      basic_string&      replace(size_type __pos, size_type __n, const basic_string& __str)      { return this->replace(__pos, __n, __str._M_data(), __str.size()); }      /**       *  @brief  Replace characters with value from another string.       *  @param pos1  Index of first character to replace.       *  @param n1  Number of characters to be replaced.       *  @param str  String to insert.       *  @param pos2  Index of first character of str to use.       *  @param n2  Number of characters from str to use.       *  @return  Reference to this string.       *  @throw  std::out_of_range  If @a pos1 > size() or @a pos2 >       *  str.size().       *  @throw  std::length_error  If new length exceeds @c max_size().       *       *  Removes the characters in the range [pos1,pos1 + n) from this       *  string.  In place, the value of @a str is inserted.  If @a pos is       *  beyond end of string, out_of_range is thrown.  If the length of the       *  result exceeds max_size(), length_error is thrown.  The value of the       *  string doesn't change if an error is thrown.      */      basic_string&      replace(size_type __pos1, size_type __n1, const basic_string& __str,	      size_type __pos2, size_type __n2)      { return this->replace(__pos1, __n1, __str._M_data()			     + __str._M_check(__pos2, "basic_string::replace"),			     __str._M_limit(__pos2, __n2)); }      /**       *  @brief  Replace characters with value of a C substring.       *  @param pos  Index of first character to replace.       *  @param n1  Number of characters to be replaced.       *  @param s  C string to insert.       *  @param n2  Number of characters from @a s to use.       *  @return  Reference to this string.       *  @throw  std::out_of_range  If @a pos1 > size().       *  @throw  std::length_error  If new length exceeds @c max_size().       *       *  Removes the characters in the range [pos,pos + n1) from this string.       *  In place, the first @a n2 characters of @a s are inserted, or all       *  of @a s if @a n2 is too large.  If @a pos is beyond end of string,       *  out_of_range is thrown.  If the length of result exceeds max_size(),       *  length_error is thrown.  The value of the string doesn't change if       *  an error is thrown.      */      basic_string&      replace(size_type __pos, size_type __n1, const _CharT* __s,	      size_type __n2);      /**       *  @brief  Replace characters with value of a C string.       *  @param pos  Index of first character to replace.       *  @param n1  Number of characters to be replaced.       *  @param s  C string to insert.       *  @return  Reference to this string.       *  @throw  std::out_of_range  If @a pos > size().       *  @throw  std::length_error  If new length exceeds @c max_size().       *       *  Removes the characters in the range [pos,pos + n1) from this string.       *  In place, the first @a n characters of @a s are inserted.  If @a       *  pos is beyond end of string, out_of_range is thrown.  If the length       *  of result exceeds max_size(), length_error is thrown.  The value of       *  the string doesn't change if an error is thrown.      */      basic_string&      replace(size_type __pos, size_type __n1, const _CharT* __s)      {	__glibcxx_requires_string(__s);	return this->replace(__pos, __n1, __s, traits_type::length(__s));      }      /**       *  @brief  Replace characters with multiple characters.       *  @param pos  Index of first character to replace.       *  @param n1  Number of characters to be replaced.       *  @param n2  Number of characters to insert.       *  @param c  Character to insert.       *  @return  Reference to this string.       *  @throw  std::out_of_range  If @a pos > size().       *  @throw  std::length_error  If new length exceeds @c max_size().       *       *  Removes the characters in the range [pos,pos + n1) from this string.       *  In place, @a n2 copies of @a c are inserted.  If @a pos is beyond       *  end of string, out_of_range is thrown.  If the length of result       *  exceeds max_size(), length_error is thrown.  The value of the string       *  doesn't change if an error is thrown.      */      basic_string&      replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)      { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),			      _M_limit(__pos, __n1), __n2, __c); }      /**       *  @brief  Replace range of characters with string.       *  @param i1  Iterator referencing start of range to replace.       *  @param i2  Iterator referencing end of range to replace.       *  @param str  String value to insert.       *  @return  Reference to this string.       *  @throw  std::length_error  If new length exceeds @c max_size().       *       *  Removes the characters in the range [i1,i2).  In place, the value of       *  @a str is inserted.  If the length of result exceeds max_size(),       *  length_error is thrown.  The value of the string doesn't change if       *  an error is thrown.      */      basic_string&      replace(iterator __i1, iterator __i2, const basic_string& __str)      { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }      /**       *  @brief  Replace range of characters with C substring.       *  @param i1  Iterator referencing start of range to replace.       *  @param i2  Iterator referencing end of range to replace.       *  @param s  C string value to insert.       *  @param n  Number of characters from s to insert.       *  @return  Reference to this string.       *  @throw  std::length_error  If new length exceeds @c max_size().       *       *  Removes the characters in the range [i1,i2).  In place, the first @a       *  n characters of @a s are inserted.  If the length of result exceeds       *  max_size(), length_error is thrown.  The value of the string doesn't       *  change if an error is thrown.      */      basic_string&      replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)      {	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2				 && __i2 <= _M_iend());	return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);      }      /**       *  @brief  Replace range of characters with C string.       *  @param i1  Iterator referencing start of range to replace.       *  @param i2  Iterator referencing end of range to replace.       *  @param s  C string value to insert.       *  @return  Reference to this string.       *  @throw  std::length_error  If new length exceeds @c max_size().       *       *  Removes the characters in the range [i1,i2).  In place, the       *  characters of @a s are inserted.  If the length of result exceeds       *  max_size(), length_error is thrown.  The value of the string doesn't       *  change if an error is thrown.      */      basic_string&      replace(iterator __i1, iterator __i2, const _CharT* __s)      {	__glibcxx_requires_string(__s);	return this->replace(__i1, __i2, __s, traits_type::length(__s));      }      /**       *  @brief  Replace range of characters with multiple characters       *  @param i1  Iterator referencing start of range to replace.       *  @param i2  Iterator referencing end of range to replace.       *  @param n  Number of characters to insert.       *  @param c  Character to insert.       *  @return  Reference to this string.       *  @throw  std::length_error  If new length exceeds @c max_size().       *       *  Removes the characters in the range [i1,i2).  In place, @a n copies       *  of @a c are inserted.  If the length of result exceeds max_size(),       *  length_error is thrown.  The value of the string doesn't change if       *  an error is thrown.      */      basic_string&      replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)      {	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2				 && __i2 <= _M_iend());	return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);      }      /**       *  @brief  Replace range of characters with range.       *  @param i1  Iterator referencing start of range to replace.       *  @param i2  Iterator referencing end of range to replace.       *  @param k1  Iterator referencing start of range to insert.       *  @param k2  Iterator referencing end of range to insert.       *  @return  Reference to this string.       *  @throw  std::length_error  If new length exceeds @c max_size().       *       *  Removes the characters in the range [i1,i2).  In place, characters       *  in the range [k1,k2) are inserted.  If the length of result exceeds       *  max_size(), length_error is thrown.  The value of the string doesn't       *  change if an error is thrown.      */      template<class _InputIterator>        basic_string&        replace(iterator __i1, iterator __i2,		_InputIterator __k1, _InputIterator __k2)        {	  _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2				   && __i2 <= _M_iend());	  __glibcxx_requires_valid_range(__k1, __k2);	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;	  return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());	}      // Specializations for the common case of pointer and iterator:      // useful to avoid the overhead of temporary buffering in _M_replace.      basic_string&      replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)      {	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2				 && __i2 <= _M_iend());	__glibcxx_requires_valid_range(__k1, __k2);	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,			     __k1, __k2 - __k1);      }      basic_string&      replace(iterator __i1, iterator __i2,	      const _CharT* __k1, const _CharT* __k2)      {	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2				 && __i2 <= _M_iend());	__glibcxx_requires_valid_range(__k1, __k2);	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,			     __k1, __k2 - __k1);      }      basic_string&      replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)      {	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2				 && __i2 <= _M_iend());	__glibcxx_requires_valid_range(__k1, __k2);	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,			     __k1.base(), __k2 - __k1);      }      basic_string&      replace(iterator __i1, iterator __i2,	      const_iterator __k1, const_iterator __k2)      {	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2				 && __i2 <= _M_iend());	__glibcxx_requires_valid_range(__k1, __k2);	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,			     __k1.base(), __k2 - __k1);      }          private:      template<class _Integer>	basic_string&	_M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,			    _Integer __val, __true_type)        { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }      template<class _InputIterator>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -