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

📄 basic_string.h

📁 openRisc2000编译链接器等,用于i386 cygwin
💻 H
📖 第 1 页 / 共 5 页
字号:
      iterator      erase(iterator __position)      {	_GLIBCXX_DEBUG_PEDASSERT(__position >= _M_ibegin()				 && __position < _M_iend());	const size_type __pos = __position - _M_ibegin();	_M_replace_safe(__pos, size_type(1), NULL, 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_replace_safe(__pos, __last - __first, NULL, 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 str  C string to insert.       *  @param n2  Number of characters from str 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 str are inserted, or all       *  of @a str 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 str  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 str 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 _Is_integer<_InputIterator>::_Integral _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>	basic_string&	_M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,			    _InputIterator __k2, __false_type);      basic_string&      _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,		     _CharT __c)      {	if (this->max_size() - (this->size() - __n1) < __n2)	  __throw_length_error(__N("basic_string::_M_replace_aux"));	_M_mutate(__pos1, __n1, __n2);	if (__n2 == 1)	  _M_data()[__pos1] = __c;	else if (__n2)	  traits_type::assign(_M_data() + __pos1, __n2, __c);	return *this;      }      basic_string&      _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,		      size_type __n2)      {	_M_mutate(__pos1, __n1, __n2);	if (__n2 == 1)	  _M_data()[__pos1] = *__s;	else if (__n2)	  traits_type::copy(_M_data() + __pos1, __s, __n2);	return *this;      }      // _S_construct_aux is used to implement the 21.3.1 para 15 which      // requires special behaviour if _InIter is an integral type      template<class _InIterator>        static _CharT*        _S_construct_aux(_InIterator __beg, _InIterator __end,			 const _Alloc& __a, __false_type)	{          typedef typename iterator_traits<_InIterator>::iterator_category _Tag;          return _S_construct(__beg, __end, __a, _Tag());	}      template<class _InIterator>        static _CharT*        _S_construct_aux(_InIterator __beg, _InIterator __end,			 const _Alloc& __a, __true_type)	{ return _S_construct(static_cast<size_type>(__beg),			      static_cast<value_type>(__end), __a); }      template<class _InIterator>        static _CharT*        _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)

⌨️ 快捷键说明

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