This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[v3] Document basic_string


Here's some docs for strings.

Jerry


2003-07-13  Jerry Quinn  <jlquinn@optonline.net>

        * include/bits/basic_string.h:  Document public functions.

*** basic_string.h.~1.36.~	Wed Jul  9 10:09:20 2003
--- basic_string.h	Sun Jul 13 13:05:20 2003
***************
*** 339,379 ****
--- 339,447 ----
        // NB: We overload ctors in some cases instead of using default
        // arguments, per 17.4.4.4 para. 2 item 2.
  
+       /**
+        *  @brief  Default constructor creates an empty string.
+        */
        inline
        basic_string();
  
+       /**
+        *  @brief  Construct an empty string using allocator a.
+        */
        explicit
        basic_string(const _Alloc& __a);
  
        // NB: per LWG issue 42, semantics different from IS:
+       /**
+        *  @brief  Construct string with copy of value of str.
+        *  @param  str  Source string.
+        */
        basic_string(const basic_string& __str);
+       /**
+        *  @brief  Construct string as copy of a substring.
+        *  @param  str  Source string.
+        *  @param  pos  Index of first character to copy from.
+        *  @param  n  Number of characters to copy (default remainder).
+        */
        basic_string(const basic_string& __str, size_type __pos,
  		   size_type __n = npos);
+       /**
+        *  @brief  Construct string as copy of a substring.
+        *  @param  str  Source string.
+        *  @param  pos  Index of first character to copy from.
+        *  @param  n  Number of characters to copy.
+        *  @param  a  Allocator to use.
+        */
        basic_string(const basic_string& __str, size_type __pos,
  		   size_type __n, const _Alloc& __a);
  
+       /**
+        *  @brief  Construct string as copy of a C substring.
+        *  @param  s  Source C string.
+        *  @param  n  Number of characters to copy.
+        *  @param  a  Allocator to use (default is default allocator).
+        */
        basic_string(const _CharT* __s, size_type __n,
  		   const _Alloc& __a = _Alloc());
+       /**
+        *  @brief  Construct string as copy of a C string.
+        *  @param  s  Source C string.
+        *  @param  a  Allocator to use (default is default allocator).
+        */
        basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
+       /**
+        *  @brief  Construct string as multiple characters.
+        *  @param  n  Number of characters.
+        *  @param  c  Character to use.
+        *  @param  a  Allocator to use (default is default allocator).
+        */
        basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc());
  
+       /**
+        *  @brief  Construct string as copy of a range.
+        *  @param  beg  Start of range.
+        *  @param  end  End of range.
+        *  @param  a  Allocator to use (default is default allocator).
+        */
        template<class _InputIterator>
          basic_string(_InputIterator __beg, _InputIterator __end,
  		     const _Alloc& __a = _Alloc());
  
+       /**
+        *  @brief  Destroy the string instance.
+        */
        ~basic_string()
        { _M_rep()->_M_dispose(this->get_allocator()); }
  
+       /**
+        *  @brief  Assign the value of str to this string.
+        *  @param  str  Source string.
+        */
        basic_string&
        operator=(const basic_string& __str) { return this->assign(__str); }
  
+       /**
+        *  @brief  Copy contents of s into this string.
+        *  @param  s  Source null-terminated string.
+        */
        basic_string&
        operator=(const _CharT* __s) { return this->assign(__s); }
  
+       /**
+        *  @brief  Set value to string of length 1.
+        *  @param  c  Source character.
+        *
+        *  Assigning to a character makes this string length 1 and
+        *  (*this)[0] == c.
+        */
        basic_string&
        operator=(_CharT __c) { return this->assign(1, __c); }
  
        // Iterators:
+       /**
+        *  Returns a read/write iterator that points to the first character in
+        *  the %string.  Unshares the string.
+        */
        iterator
        begin()
        {
***************
*** 381,390 ****
--- 449,466 ----
  	return iterator(_M_data());
        }
  
+       /**
+        *  Returns a read-only (constant) iterator that points to the first
+        *  character in the %string.
+        */
        const_iterator
        begin() const
        { return const_iterator(_M_data()); }
  
+       /**
+        *  Returns a read/write iterator that points one past the last
+        *  character in the %string.  Unshares the string.
+        */
        iterator
        end()
        {
***************
*** 392,451 ****
--- 468,623 ----
  	return iterator(_M_data() + this->size());
        }
  
+       /**
+        *  Returns a read-only (constant) iterator that points one past the
+        *  last character in the %string.
+        */
        const_iterator
        end() const
        { return const_iterator(_M_data() + this->size()); }
  
+       /**
+        *  Returns a read/write reverse iterator that points to the last
+        *  character in the %string.  Iteration is done in reverse element
+        *  order.  Unshares the string.
+        */
        reverse_iterator
        rbegin()
        { return reverse_iterator(this->end()); }
  
+       /**
+        *  Returns a read-only (constant) reverse iterator that points
+        *  to the last character in the %string.  Iteration is done in
+        *  reverse element order.
+        */
        const_reverse_iterator
        rbegin() const
        { return const_reverse_iterator(this->end()); }
  
+       /**
+        *  Returns a read/write reverse iterator that points to one before the
+        *  first character in the %string.  Iteration is done in reverse
+        *  element order.  Unshares the string.
+        */
        reverse_iterator
        rend()
        { return reverse_iterator(this->begin()); }
  
+       /**
+        *  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.
+        */
        const_reverse_iterator
        rend() const
        { return const_reverse_iterator(this->begin()); }
  
      public:
        // Capacity:
+       ///  Returns the number of characters in the string, not including any
+       ///  null-termination.
        size_type
        size() const { return _M_rep()->_M_length; }
  
+       ///  Returns the number of characters in the string, not including any
+       ///  null-termination.
        size_type
        length() const { return _M_rep()->_M_length; }
  
+       /// Returns the size() of the largest possible %string.
        size_type
        max_size() const { return _Rep::_S_max_size; }
  
+       /**
+        *  @brief  Resizes the %string to the specified number of characters.
+        *  @param  n  Number of characters the %string should contain.
+        *  @param  c  Character to fill any new elements.
+        *
+        *  This function will %resize the %string to the specified
+        *  number of characters.  If the number is smaller than the
+        *  %string's current size the %string is truncated, otherwise
+        *  the %string is extended and new elements are set to __c.
+        */
        void
        resize(size_type __n, _CharT __c);
  
+       /**
+        *  @brief  Resizes the %string to the specified number of characters.
+        *  @param  n  Number of characters the %string should contain.
+        *
+        *  This function will resize the %string to the specified length.  If
+        *  the new size is smaller than the %string's current size the %string
+        *  is truncated, otherwise the %string is extended and new characters
+        *  are default-constructed.  For basic types such as char, this means
+        *  setting them to 0.
+        */
        void
        resize(size_type __n) { this->resize(__n, _CharT()); }
  
+       /**
+        *  Returns the total number of characters that the %string can hold
+        *  before needing to allocate more memory.
+        */
        size_type
        capacity() const { return _M_rep()->_M_capacity; }
  
+       /**
+        *  @brief  Attempt to preallocate enough memory for specified number of
+        *          characters.
+        *  @param  n  Number of characters required.
+        *  @throw  std::length_error  If @a n exceeds @c max_size().
+        *
+        *  This function attempts to reserve enough memory for the
+        *  %string to hold the specified number of characters.  If the
+        *  number requested is more than max_size(), length_error is
+        *  thrown.
+        *
+        *  The advantage of this function is that if optimal code is a
+        *  necessity and the user can determine the string length that will be
+        *  required, the user can reserve the memory in %advance, and thus
+        *  prevent a possible reallocation of memory and copying of %string
+        *  data.
+        */
        void
        reserve(size_type __res_arg = 0);
  
+       /**
+        *  Erases the string, making it empty.
+        */
        void
        clear() { _M_mutate(0, this->size(), 0); }
  
+       /**
+        *  Returns true if the %string is empty.  Equivalent to *this == "".
+        */
        bool
        empty() const { return this->size() == 0; }
  
        // Element access:
+       /**
+        *  @brief  Subscript access to the data contained in the %string.
+        *  @param  n  The index of the character to access.
+        *  @return  Read-only (constant) reference to the character.
+        *
+        *  This operator allows for easy, array-style, data access.
+        *  Note that data access with this operator is unchecked and
+        *  out_of_range lookups are not defined. (For checked lookups
+        *  see at().)
+        */
        const_reference
        operator[] (size_type __pos) const
        { return _M_data()[__pos]; }
  
+       /**
+        *  @brief  Subscript access to the data contained in the %string.
+        *  @param  n  The index of the character to access.
+        *  @return  Read/write reference to the character.
+        *
+        *  This operator allows for easy, array-style, data access.
+        *  Note that data access with this operator is unchecked and
+        *  out_of_range lookups are not defined. (For checked lookups
+        *  see at().)  Unshares the string.
+        */
        reference
        operator[](size_type __pos)
        {
***************
*** 453,458 ****
--- 625,640 ----
  	return _M_data()[__pos];
        }
  
+       /**
+        *  @brief  Provides access to the data contained in the %string.
+        *  @param n The index of the character to access.
+        *  @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
        {
***************
*** 461,466 ****
--- 643,659 ----
  	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)
        {
***************
*** 471,555 ****
--- 664,955 ----
        }
  
        // 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 s  The character to append.
+        *  @return  Reference to this string.
+        */
        basic_string&
        operator+=(_CharT __c) { return this->append(size_type(1), __c); }
  
+       /**
+        *  @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 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.
+        */
        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)
        { 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)
        { this->replace(_M_iend(), _M_iend(), 1, __c); }
  
+       /**
+        *  @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 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.
+        */
        basic_string&
        assign(const basic_string& __str, size_type __pos, size_type __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 n
+        *  characters of s.  If n is is larger than the number of available
+        *  characters in s, the remainder of 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 s.  The
+        *  data is copied, so there is no dependence on s once the function
+        *  returns.
+        */
        basic_string&
        assign(const _CharT* __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 n copies of character
+        *  c.
+        */
        basic_string&
        assign(size_type __n, _CharT __c)
        { return this->replace(_M_ibegin(), _M_iend(), __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 n copies of character c starting at the position referenced
+        *  by iterator 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 str starting at 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, 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 pos1 > size() or pos2 > str.size().
+        *
+        *  Starting at pos1, insert n character of str beginning with pos2.  If
+        *  adding characters causes the length to exceed max_size(),
+        *  length_error is thrown.  If pos1 is beyond the end of this string or
+        *  pos2 is beyond the end of 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);
  
+       /**
+        *  @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 pos is beyond the end of this string.
+        *
+        *  Inserts the first n characters of s starting at pos.  If adding
+        *  characters causes the length to exceed max_size(), length_error is
+        *  thrown.  If 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 pos is beyond the end of this string.
+        *
+        *  Inserts the first n characters of s starting at pos.  If adding
+        *  characters causes the length to exceed max_size(), length_error is
+        *  thrown.  If 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)
        { 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 pos is beyond the end of this string.
+        *
+        *  Inserts n copies of character c starting at index pos.  If adding
+        *  characters causes the length to exceed max_size(), length_error is
+        *  thrown.  If pos > length(), out_of_range is thrown.  The value of
+        *  the string doesn't change if an error is thrown.
+       */
        basic_string&
        insert(size_type __pos, size_type __n, _CharT __c)
        {
***************
*** 557,562 ****
--- 957,975 ----
  	return *this;
        }
  
+       /**
+        *  @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().
+        *  @throw  std::out_of_range  If p is beyond the end of this string.
+        *
+        *  Inserts character c at position referenced by p.  If adding
+        *  character causes the length to exceed max_size(), length_error is
+        *  thrown.  If 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 = _CharT())
        {
***************
*** 566,571 ****
--- 979,997 ----
   	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 pos is beyond the end of this string.
+        *
+        *  Removes n characters from this string starting at pos.  The length
+        *  of the string is reduced by n.  If there are < n characters to
+        *  remove, the remainder of the string is truncated.  If 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)
        {
***************
*** 573,578 ****
--- 999,1014 ----
  			     _M_data(), _M_data());
        }
  
+       /**
+        *  @brief  Remove one character.
+        *  @param position  Iterator referencing the character to remove.
+        *  @return  iterator referencing same location after removal.
+        *  @throw  std::out_of_range  If pos is beyond the end of this string.
+        *
+        *  Removes the character at position from this string.  If position is
+        *  beyond end of string, out_of_range is thrown.  The value of the
+        *  string doesn't change if an error is thrown.
+       */
        iterator
        erase(iterator __position)
        {
***************
*** 582,587 ****
--- 1018,1034 ----
  	return _M_ibegin() + __i;
        }
  
+       /**
+        *  @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.
+        *  @throw  std::out_of_range  If first is beyond the end of this string.
+        *
+        *  Removes the characters in the range [first,last) from this string.
+        *  If first is beyond end of string, out_of_range is thrown.  The
+        *  value of the string doesn't change if an error is thrown.
+       */
        iterator
        erase(iterator __first, iterator __last)
        {
***************
*** 591,633 ****
--- 1038,1228 ----
  	return _M_ibegin() + __i;
        }
  
+       /**
+        *  @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 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 str is inserted.  If 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 pos1 > size() or 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 str is inserted.  If 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);
  
+       /**
+        *  @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 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 n2 characters of str are inserted, or all of str
+        *  if n2 is too large.  If 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 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 n characters of str are inserted.  If
+        *  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)
        { 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 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, n2 copies of c are inserted.  If 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 this->replace(_M_check(__pos), _M_fold(__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
+        *  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 n
+        *  characters of 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)
        { 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 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)
        { 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, n copies of
+        *  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)
        { return _M_replace_aux(__i1, __i2, __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,
***************
*** 735,747 ****
--- 1330,1366 ----
  
      public:
  
+       /**
+        *  @brief  Copy substring into C string.
+        *  @param s  C string to copy value into.
+        *  @param n  Number of characters to copy.
+        *  @param pos  Index of first character to copy.
+        *  @return  Number of characters actually copied
+        *  @throw  std::out_of_range  If 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.
+       */
        size_type
        copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
  
+       /**
+        *  @brief  Swap contents with another string.
+        *  @param s  String to swap with.
+        *
+        *  Exchanges the contents of this string with that of s in constant
+        *  time. 
+       */
        void
        swap(basic_string& __s);
  
        // String operations:
+       /**
+        *  @brief  Return const pointer to null-terminated contents.
+        *
+        *  This is a handle to internal data.  Do not modify or dire things may
+        *  happen.
+       */
        const _CharT*
        c_str() const
        {
***************
*** 751,849 ****
--- 1370,1739 ----
          return _M_data();
        }
  
+       /**
+        *  @brief  Return const pointer to contents.
+        *
+        *  This is a handle to internal data.  It may not be null-terminated.
+        *  Do not modify or dire things may happen.
+       */
        const _CharT*
        data() const { return _M_data(); }
  
+       /**
+        *  @brief  Return copy of allocator used to construct this string.
+       */
        allocator_type
        get_allocator() const { return _M_dataplus; }
  
+       /**
+        *  @brief  Find position of a C substring.
+        *  @param s  C string to locate.
+        *  @param pos  Index of character to search from.
+        *  @param n  Number of characters from s to search for.
+        *  @return  Index of start of first occurrence.
+        *
+        *  Starting from pos, searches forward for the first n characters in
+        *  s within this string.  If found, returns the index where it
+        *  begins.  If not found, returns npos.
+       */
        size_type
        find(const _CharT* __s, size_type __pos, size_type __n) const;
  
+       /**
+        *  @brief  Find position of a string.
+        *  @param str  String to locate.
+        *  @param pos  Index of character to search from (default 0).
+        *  @return  Index of start of first occurrence.
+        *
+        *  Starting from pos, searches forward for value of str within this
+        *  string.  If found, returns the index where it begins.  If not found,
+        *  returns npos.
+       */
        size_type
        find(const basic_string& __str, size_type __pos = 0) const
        { return this->find(__str.data(), __pos, __str.size()); }
  
+       /**
+        *  @brief  Find position of a C string.
+        *  @param s  C string to locate.
+        *  @param pos  Index of character to search from (default 0).
+        *  @return  Index of start of first occurrence.
+        *
+        *  Starting from pos, searches forward for the value of s within this
+        *  string.  If found, returns the index where it begins.  If not found,
+        *  returns npos.
+       */
        size_type
        find(const _CharT* __s, size_type __pos = 0) const
        { return this->find(__s, __pos, traits_type::length(__s)); }
  
+       /**
+        *  @brief  Find position of a character.
+        *  @param c  Character to locate.
+        *  @param pos  Index of character to search from (default 0).
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches forward for c within this string.  If
+        *  found, returns the index where it was found.  If not found, returns
+        *  npos.
+       */
        size_type
        find(_CharT __c, size_type __pos = 0) const;
  
+       /**
+        *  @brief  Find last position of a string.
+        *  @param str  String to locate.
+        *  @param pos  Index of character to search back from (default end).
+        *  @return  Index of start of last occurrence.
+        *
+        *  Starting from pos, searches backward for value of str within this
+        *  string.  If found, returns the index where it begins.  If not found,
+        *  returns npos.
+       */
        size_type
        rfind(const basic_string& __str, size_type __pos = npos) const
        { return this->rfind(__str.data(), __pos, __str.size()); }
  
+       /**
+        *  @brief  Find last position of a C substring.
+        *  @param s  C string to locate.
+        *  @param pos  Index of character to search back from.
+        *  @param n  Number of characters from s to search for.
+        *  @return  Index of start of last occurrence.
+        *
+        *  Starting from pos, searches backward for the first n characters in
+        *  s within this string.  If found, returns the index where it
+        *  begins.  If not found, returns npos.
+       */
        size_type
        rfind(const _CharT* __s, size_type __pos, size_type __n) const;
  
+       /**
+        *  @brief  Find last position of a C string.
+        *  @param s  C string to locate.
+        *  @param pos  Index of character to start search at (default 0).
+        *  @return  Index of start of  last occurrence.
+        *
+        *  Starting from pos, searches backward for the value of s within this
+        *  string.  If found, returns the index where it begins.  If not found,
+        *  returns npos.
+       */
        size_type
        rfind(const _CharT* __s, size_type __pos = npos) const
        { return this->rfind(__s, __pos, traits_type::length(__s)); }
  
+       /**
+        *  @brief  Find last position of a character.
+        *  @param c  Character to locate.
+        *  @param pos  Index of character to search back from (default 0).
+        *  @return  Index of last occurrence.
+        *
+        *  Starting from pos, searches backward for c within this string.  If
+        *  found, returns the index where it was found.  If not found, returns
+        *  npos.
+       */
        size_type
        rfind(_CharT __c, size_type __pos = npos) const;
  
+       /**
+        *  @brief  Find position of a character of string.
+        *  @param str  String containing characters to locate.
+        *  @param pos  Index of character to search from (default 0).
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches forward for one of the characters of str
+        *  within this string.  If found, returns the index where it was found.
+        *  If not found, returns npos.
+       */
        size_type
        find_first_of(const basic_string& __str, size_type __pos = 0) const
        { return this->find_first_of(__str.data(), __pos, __str.size()); }
  
+       /**
+        *  @brief  Find position of a character of C substring.
+        *  @param s  String containing characters to locate.
+        *  @param pos  Index of character to search from (default 0).
+        *  @param n  Number of characters from s to search for.
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches forward for one of the first n
+        *  characters of s within this string.  If found, returns the index
+        *  where it was found.  If not found, returns npos.
+       */
        size_type
        find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
  
+       /**
+        *  @brief  Find position of a character of C string.
+        *  @param s  String containing characters to locate.
+        *  @param pos  Index of character to search from (default 0).
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches forward for one of the characters of s
+        *  within this string.  If found, returns the index where it was found.
+        *  If not found, returns npos.
+       */
        size_type
        find_first_of(const _CharT* __s, size_type __pos = 0) const
        { return this->find_first_of(__s, __pos, traits_type::length(__s)); }
  
+       /**
+        *  @brief  Find position of a character.
+        *  @param c  Character to locate.
+        *  @param pos  Index of character to search from (default 0).
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches forward for the character c within this
+        *  string.  If found, returns the index where it was found.  If not
+        *  found, returns npos.
+        *
+        *  Note: equivalent to find(c, pos).
+       */
        size_type
        find_first_of(_CharT __c, size_type __pos = 0) const
        { return this->find(__c, __pos); }
  
+       /**
+        *  @brief  Find last position of a character of string.
+        *  @param str  String containing characters to locate.
+        *  @param pos  Index of character to search back from (default end).
+        *  @return  Index of last occurrence.
+        *
+        *  Starting from pos, searches backward for one of the characters of
+        *  str within this string.  If found, returns the index where it was
+        *  found.  If not found, returns npos.
+       */
        size_type
        find_last_of(const basic_string& __str, size_type __pos = npos) const
        { return this->find_last_of(__str.data(), __pos, __str.size()); }
  
+       /**
+        *  @brief  Find last position of a character of C substring.
+        *  @param s  C string containing characters to locate.
+        *  @param pos  Index of character to search back from (default end).
+        *  @param n  Number of characters from s to search for.
+        *  @return  Index of last occurrence.
+        *
+        *  Starting from pos, searches backward for one of the first n
+        *  characters of s within this string.  If found, returns the index
+        *  where it was found.  If not found, returns npos.
+       */
        size_type
        find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
  
+       /**
+        *  @brief  Find last position of a character of C string.
+        *  @param s  C string containing characters to locate.
+        *  @param pos  Index of character to search back from (default end).
+        *  @return  Index of last occurrence.
+        *
+        *  Starting from pos, searches backward for one of the characters of s
+        *  within this string.  If found, returns the index where it was found.
+        *  If not found, returns npos.
+       */
        size_type
        find_last_of(const _CharT* __s, size_type __pos = npos) const
        { return this->find_last_of(__s, __pos, traits_type::length(__s)); }
  
+       /**
+        *  @brief  Find last position of a character.
+        *  @param c  Character to locate.
+        *  @param pos  Index of character to search back from (default 0).
+        *  @return  Index of last occurrence.
+        *
+        *  Starting from pos, searches backward for c within this string.  If
+        *  found, returns the index where it was found.  If not found, returns
+        *  npos.
+        *
+        *  Note: equivalent to rfind(c, pos).
+       */
        size_type
        find_last_of(_CharT __c, size_type __pos = npos) const
        { return this->rfind(__c, __pos); }
  
+       /**
+        *  @brief  Find position of a character not in string.
+        *  @param str  String containing characters to avoid.
+        *  @param pos  Index of character to search from (default 0).
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches forward for a character not contained in
+        *  str within this string.  If found, returns the index where it was
+        *  found.  If not found, returns npos.
+       */
        size_type
        find_first_not_of(const basic_string& __str, size_type __pos = 0) const
        { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
  
+       /**
+        *  @brief  Find position of a character not in C substring.
+        *  @param s  C string containing characters to avoid.
+        *  @param pos  Index of character to search from (default 0).
+        *  @param n  Number of characters from s to consider.
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches forward for a character not contained in
+        *  the first n characters of s within this string.  If found, returns
+        *  the index where it was found.  If not found, returns npos.
+       */
        size_type
        find_first_not_of(const _CharT* __s, size_type __pos,
  			size_type __n) const;
  
+       /**
+        *  @brief  Find position of a character not in C string.
+        *  @param s  C string containing characters to avoid.
+        *  @param pos  Index of character to search from (default 0).
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches forward for a character not contained in
+        *  s within this string.  If found, returns the index where it was
+        *  found.  If not found, returns npos.
+       */
        size_type
        find_first_not_of(const _CharT* __s, size_type __pos = 0) const
        { return this->find_first_not_of(__s, __pos, traits_type::length(__s)); }
  
+       /**
+        *  @brief  Find position of a different character.
+        *  @param c  Character to avoid.
+        *  @param pos  Index of character to search from (default 0).
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches forward for a character other than c
+        *  within this string.  If found, returns the index where it was found.
+        *  If not found, returns npos.
+       */
        size_type
        find_first_not_of(_CharT __c, size_type __pos = 0) const;
  
+       /**
+        *  @brief  Find last position of a character not in string.
+        *  @param str  String containing characters to avoid.
+        *  @param pos  Index of character to search from (default 0).
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches backward for a character not contained
+        *  in str within this string.  If found, returns the index where it was
+        *  found.  If not found, returns npos.
+       */
        size_type
        find_last_not_of(const basic_string& __str, size_type __pos = npos) const
        { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
  
+       /**
+        *  @brief  Find last position of a character not in C substring.
+        *  @param s  C string containing characters to avoid.
+        *  @param pos  Index of character to search from (default 0).
+        *  @param n  Number of characters from s to consider.
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches backward for a character not contained
+        *  in the first n characters of s within this string.  If found,
+        *  returns the index where it was found.  If not found, returns npos.
+       */
        size_type
        find_last_not_of(const _CharT* __s, size_type __pos,
  		       size_type __n) const;
+       /**
+        *  @brief  Find position of a character not in C string.
+        *  @param s  C string containing characters to avoid.
+        *  @param pos  Index of character to search from (default 0).
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches backward for a character not contained in
+        *  s within this string.  If found, returns the index where it was
+        *  found.  If not found, returns npos.
+       */
        size_type
        find_last_not_of(const _CharT* __s, size_type __pos = npos) const
        { return this->find_last_not_of(__s, __pos, traits_type::length(__s)); }
  
+       /**
+        *  @brief  Find last position of a different character.
+        *  @param c  Character to avoid.
+        *  @param pos  Index of character to search from (default 0).
+        *  @return  Index of first occurrence.
+        *
+        *  Starting from pos, searches backward for a character other than c
+        *  within this string.  If found, returns the index where it was found.
+        *  If not found, returns npos.
+       */
        size_type
        find_last_not_of(_CharT __c, size_type __pos = npos) const;
  
+       /**
+        *  @brief  Get a substring.
+        *  @param pos  Index of first character (default 0).
+        *  @param n  Number of characters in substring (default remainder).
+        *  @return  The new string.
+        *  @throw  std::out_of_range  If pos > size().
+        *
+        *  Construct and return a new string using the n characters starting at
+        *  pos.  If the string is too short, use the remainder of the
+        *  characters.  If pos is beyond the end of the string, out_of_range is
+        *  thrown.
+       */
        basic_string
        substr(size_type __pos = 0, size_type __n = npos) const
        {
***************
*** 852,857 ****
--- 1742,1758 ----
  	return basic_string(*this, __pos, __n);
        }
  
+       /**
+        *  @brief  Compare to a string.
+        *  @param str  String to compare against.
+        *  @return  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.  If the lengths of str and this string are different, the
+        *  shorter one is ordered first.  If they are the same, returns the
+        *  result of traits::compare(data(),str.data(),size());
+       */
        int
        compare(const basic_string& __str) const
        {
***************
*** 865,885 ****
--- 1766,1861 ----
  	return __r;
        }
  
+       /**
+        *  @brief  Compare substring to a string.
+        *  @param pos  Index of first character of substring.
+        *  @param n  Number of characters in substring.
+        *  @param str  String to compare against.
+        *  @return  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.  If the lengths of str and the substring are different,
+        *  the shorter one is ordered first.  If they are the same, returns the
+        *  result of traits::compare(substring.data(),str.data(),size());
+       */
        int
        compare(size_type __pos, size_type __n, const basic_string& __str) const;
  
+       /**
+        *  @brief  Compare substring to a substring.
+        *  @param pos1  Index of first character of substring.
+        *  @param n1  Number of characters in substring.
+        *  @param str  String to compare against.
+        *  @param pos2  Index of first character of substring of str.
+        *  @param n2  Number of characters in substring of str.
+        *  @return  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.  If the
+        *  lengths of the substring of str and this substring are different,
+        *  the shorter one is ordered first.  If they are the same, returns the
+        *  result of
+        *  traits::compare(substring.data(),str.substr(pos2,n2).data(),size());
+       */
        int
        compare(size_type __pos1, size_type __n1, const basic_string& __str,
  	      size_type __pos2, size_type __n2) const;
  
+       /**
+        *  @brief  Compare to a C string.
+        *  @param s  C string to compare against.
+        *  @return  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.  If the lengths of s and this string are different, the shorter
+        *  one is ordered first.  If they are the same, returns the result of
+        *  traits::compare(data(),s,size());
+       */
        int
        compare(const _CharT* __s) const;
  
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 5 String::compare specification questionable
+       /**
+        *  @brief  Compare substring to a C string.
+        *  @param pos  Index of first character of substring.
+        *  @param n1  Number of characters in substring.
+        *  @param s  C string to compare against.
+        *  @return  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.  If the lengths of s and the substring are different, the
+        *  shorter one is ordered first.  If they are the same, returns the
+        *  result of traits::compare(substring.data(),s,size());
+       */
        int
        compare(size_type __pos, size_type __n1, const _CharT* __s) const;
  
+       /**
+        *  @brief  Compare substring against a C substring.
+        *  @param pos1  Index of first character of substring.
+        *  @param n1  Number of characters in substring.
+        *  @param s  C string to compare against.
+        *  @param n2  Number of characters in substring of s.
+        *  @return  Integer < 0, 0, or > 0.
+        *
+        *  Form the substring of this string from the n1 characters starting at
+        *  pos1.  Form the substring of s from the first n characters of s.
+        *  Returns an integer < 0 if this substring is ordered before the
+        *  substring of s, 0 if their values are equivalent, or > 0 if this
+        *  substring is ordered after the substring of s.  If the lengths of
+        *  this substring and n are different, the shorter one is ordered
+        *  first.  If they are the same, returns the result of
+        *  traits::compare(substring.data(),s,size());
+       */
        int
        compare(size_type __pos, size_type __n1, const _CharT* __s,
  	      size_type __n2) const;
***************
*** 892,898 ****
      : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { }
  
    // operator+
!   template<typename _CharT, typename _Traits, typename _Alloc>
      basic_string<_CharT, _Traits, _Alloc>
      operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
--- 1868,1880 ----
      : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { }
  
    // operator+
!   /**
!    *  @brief  Concatenate two strings.
!    *  @param lhs  First string.
!    *  @param rhs  Last string.
!    *  @return  New string with value of lhs followed by rhs.
!    */ 
!  template<typename _CharT, typename _Traits, typename _Alloc>
      basic_string<_CharT, _Traits, _Alloc>
      operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
***************
*** 902,916 ****
--- 1884,1916 ----
        return __str;
      }
  
+   /**
+    *  @brief  Concatenate C string and string.
+    *  @param lhs  First string.
+    *  @param rhs  Last string.
+    *  @return  New string with value of lhs followed by rhs.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      basic_string<_CharT,_Traits,_Alloc>
      operator+(const _CharT* __lhs,
  	      const basic_string<_CharT,_Traits,_Alloc>& __rhs);
  
+   /**
+    *  @brief  Concatenate character and string.
+    *  @param lhs  First string.
+    *  @param rhs  Last string.
+    *  @return  New string with lhs followed by rhs.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      basic_string<_CharT,_Traits,_Alloc>
      operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
  
+   /**
+    *  @brief  Concatenate string and C string.
+    *  @param lhs  First string.
+    *  @param rhs  Last string.
+    *  @return  New string with lhs followed by rhs.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline basic_string<_CharT, _Traits, _Alloc>
      operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
***************
*** 921,926 ****
--- 1921,1932 ----
        return __str;
      }
  
+   /**
+    *  @brief  Concatenate string and character.
+    *  @param lhs  First string.
+    *  @param rhs  Last string.
+    *  @return  New string with lhs followed by rhs.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline basic_string<_CharT, _Traits, _Alloc>
      operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
***************
*** 933,950 ****
--- 1939,1974 ----
      }
  
    // operator ==
+   /**
+    *  @brief  Test equivalence of two strings.
+    *  @param lhs  First string.
+    *  @param rhs  Second string.
+    *  @return  True if lhs.compare(rhs) == 0.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
      { return __lhs.compare(__rhs) == 0; }
  
+   /**
+    *  @brief  Test equivalence of C string and string.
+    *  @param lhs  C string.
+    *  @param rhs  String.
+    *  @return  True if rhs.compare(lhs) == 0.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator==(const _CharT* __lhs,
  	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
      { return __rhs.compare(__lhs) == 0; }
  
+   /**
+    *  @brief  Test equivalence of string and C string.
+    *  @param lhs  String.
+    *  @param rhs  C string.
+    *  @return  True if lhs.compare(rhs) == 0.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
***************
*** 952,969 ****
--- 1976,2011 ----
      { return __lhs.compare(__rhs) == 0; }
  
    // operator !=
+   /**
+    *  @brief  Test difference of two strings.
+    *  @param lhs  First string.
+    *  @param rhs  Second string.
+    *  @return  True if lhs.compare(rhs) != 0.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
      { return __rhs.compare(__lhs) != 0; }
  
+   /**
+    *  @brief  Test difference of C string and string.
+    *  @param lhs  C string.
+    *  @param rhs  String.
+    *  @return  True if rhs.compare(lhs) != 0.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator!=(const _CharT* __lhs,
  	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
      { return __rhs.compare(__lhs) != 0; }
  
+   /**
+    *  @brief  Test difference of string and C string.
+    *  @param lhs  String.
+    *  @param rhs  C string.
+    *  @return  True if lhs.compare(rhs) != 0.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
***************
*** 971,988 ****
--- 2013,2048 ----
      { return __lhs.compare(__rhs) != 0; }
  
    // operator <
+   /**
+    *  @brief  Test if string precedes string.
+    *  @param lhs  First string.
+    *  @param rhs  Second string.
+    *  @return  True if lhs precedes rhs.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
      { return __lhs.compare(__rhs) < 0; }
  
+   /**
+    *  @brief  Test if string precedes C string.
+    *  @param lhs  String.
+    *  @param rhs  C string.
+    *  @return  True if lhs precedes rhs.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	      const _CharT* __rhs)
      { return __lhs.compare(__rhs) < 0; }
  
+   /**
+    *  @brief  Test if C string precedes string.
+    *  @param lhs  C string.
+    *  @param rhs  String.
+    *  @return  True if lhs precedes rhs.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator<(const _CharT* __lhs,
***************
*** 990,1007 ****
--- 2050,2085 ----
      { return __rhs.compare(__lhs) > 0; }
  
    // operator >
+   /**
+    *  @brief  Test if string follows string.
+    *  @param lhs  First string.
+    *  @param rhs  Second string.
+    *  @return  True if lhs follows rhs.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
      { return __lhs.compare(__rhs) > 0; }
  
+   /**
+    *  @brief  Test if string follows C string.
+    *  @param lhs  String.
+    *  @param rhs  C string.
+    *  @return  True if lhs follows rhs.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	      const _CharT* __rhs)
      { return __lhs.compare(__rhs) > 0; }
  
+   /**
+    *  @brief  Test if C string follows string.
+    *  @param lhs  C string.
+    *  @param rhs  String.
+    *  @return  True if lhs follows rhs.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator>(const _CharT* __lhs,
***************
*** 1009,1026 ****
--- 2087,2122 ----
      { return __rhs.compare(__lhs) < 0; }
  
    // operator <=
+   /**
+    *  @brief  Test if string doesn't follow string.
+    *  @param lhs  First string.
+    *  @param rhs  Second string.
+    *  @return  True if lhs doesn't follow rhs.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
      { return __lhs.compare(__rhs) <= 0; }
  
+   /**
+    *  @brief  Test if string doesn't follow C string.
+    *  @param lhs  String.
+    *  @param rhs  C string.
+    *  @return  True if lhs doesn't follow rhs.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	       const _CharT* __rhs)
      { return __lhs.compare(__rhs) <= 0; }
  
+   /**
+    *  @brief  Test if C string doesn't follow string.
+    *  @param lhs  C string.
+    *  @param rhs  String.
+    *  @return  True if lhs doesn't follow rhs.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator<=(const _CharT* __lhs,
***************
*** 1028,1045 ****
--- 2124,2159 ----
    { return __rhs.compare(__lhs) >= 0; }
  
    // operator >=
+   /**
+    *  @brief  Test if string doesn't precede string.
+    *  @param lhs  First string.
+    *  @param rhs  Second string.
+    *  @return  True if lhs doesn't precede rhs.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
      { return __lhs.compare(__rhs) >= 0; }
  
+   /**
+    *  @brief  Test if string doesn't precede C string.
+    *  @param lhs  String.
+    *  @param rhs  C string.
+    *  @return  True if lhs doesn't precede rhs.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	       const _CharT* __rhs)
      { return __lhs.compare(__rhs) >= 0; }
  
+   /**
+    *  @brief  Test if C string doesn't precede string.
+    *  @param lhs  C string.
+    *  @param rhs  String.
+    *  @return  True if lhs doesn't precede rhs.  False otherwise.
+    */ 
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline bool
      operator>=(const _CharT* __lhs,
***************
*** 1047,1073 ****
--- 2161,2239 ----
      { return __rhs.compare(__lhs) <= 0; }
  
  
+   /**
+    *  @brief  Swap contents of two strings.
+    *  @param lhs  First string.
+    *  @param rhs  Second string.
+    *
+    *  Exchanges the contents of lhs and rhs in constant time. 
+    */
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline void
      swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,
  	 basic_string<_CharT, _Traits, _Alloc>& __rhs)
      { __lhs.swap(__rhs); }
  
+   /**
+    *  @brief  Read stream into a string.
+    *  @param is  Input stream.
+    *  @param str  Buffer to store into.
+    *  @return  Reference to the input stream.
+    *
+    *  Stores characters from is into str until whitespace is found, the end of
+    *  the stream is encountered, or str.max_size() is reached.  If is.width()
+    *  is non-zero, that is the limit on the number of characters stored into
+    *  str.  Any previous contents of str are erased.
+    */
    template<typename _CharT, typename _Traits, typename _Alloc>
      basic_istream<_CharT, _Traits>&
      operator>>(basic_istream<_CharT, _Traits>& __is,
  	       basic_string<_CharT, _Traits, _Alloc>& __str);
  
+   /**
+    *  @brief  Write string to a stream.
+    *  @param os  Output stream.
+    *  @param str  String to write out.
+    *  @return  Reference to the output stream.
+    *
+    *  Output characters of str into os following the same rules as for writing
+    *  a C string.
+    */
    template<typename _CharT, typename _Traits, typename _Alloc>
      basic_ostream<_CharT, _Traits>&
      operator<<(basic_ostream<_CharT, _Traits>& __os,
  	       const basic_string<_CharT, _Traits, _Alloc>& __str);
  
+   /**
+    *  @brief  Read a line from stream into a string.
+    *  @param is  Input stream.
+    *  @param str  Buffer to store into.
+    *  @param delim  Character marking end of line.
+    *  @return  Reference to the input stream.
+    *
+    *  Stores characters from is into str until delim is found, the end of
+    *  the stream is encountered, or str.max_size() is reached.  If is.width()
+    *  is non-zero, that is the limit on the number of characters stored into
+    *  str.  Any previous contents of str are erased.  If delim was
+    *  encountered, it is extracted but not stored into str.
+    */
    template<typename _CharT, typename _Traits, typename _Alloc>
      basic_istream<_CharT,_Traits>&
      getline(basic_istream<_CharT, _Traits>& __is,
  	    basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim);
  
+   /**
+    *  @brief  Read a line from stream into a string.
+    *  @param is  Input stream.
+    *  @param str  Buffer to store into.
+    *  @return  Reference to the input stream.
+    *
+    *  Stores characters from is into str until '\n' is found, the end of the
+    *  stream is encountered, or str.max_size() is reached.  If is.width() is
+    *  non-zero, that is the limit on the number of characters stored into str.
+    *  Any previous contents of str are erased.  If end of line was
+    *  encountered, it is extracted but not stored into str.
+    */
    template<typename _CharT, typename _Traits, typename _Alloc>
      inline basic_istream<_CharT,_Traits>&
      getline(basic_istream<_CharT, _Traits>& __is,


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]