Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::basic_stringbuf::str(3)  C++ Standard Libary std::basic_stringbuf::str(3)

NAME
       std::basic_stringbuf::str - std::basic_stringbuf::str

Synopsis
	  std::basic_string<CharT,    Traits,	 Allocator>    str()	const;
       (until C++20)
	  std::basic_string<CharT,   Traits,	Allocator>    str()    const&;
       (since C++20)
	  template<class SAlloc>
	  std::basic_string<CharT,   Traits,  SAlloc>  str(  const  SAlloc&  a
       (2) (since C++20)
	  ) const;
	  std::basic_string<CharT,    Traits,	  Allocator>	 str()	   &&;
       (3) (since C++20)
	  void	str(  const std::basic_string<CharT, Traits, Allocator>& s (1)
       (4)
	  );
	  template<class					       SAlloc>
       (5) (since C++20)
	  void str( const std::basic_string<CharT, Traits, SAlloc>& s );
	  void	 str(	std::basic_string<CharT,  Traits,  Allocator>&&	 s  );
       (6) (since C++20)
	  template<		class		  StringViewLike	     >
       (7) (since C++26)
	  void str( const StringViewLike& t );

	  Gets and sets	the underlying string.

	  In  the  descriptions	 below,	 buf and mode are exposition-only data
       members of *this.

	  1) Creates and returns a std::basic_string object containing a  copy
       of this
	  std::basic_stringbuf's underlying character sequence.	For input-only
       streams,	the
	  returned string contains the characters from the range [eback(), eg-
       ptr()). For
	  input/output	or  output-only	 streams, contains the characters from
       pbase() to the
	  last character in the	sequence regardless of egptr() and epptr().

	  The member character sequence	in a buffer open for  writing  can  be
       over-allocated for
	  efficiency  purposes.	 In that case, only the	initialized characters
       are returned:
	  these	characters are the ones	that were obtained from	the string ar-
       gument of the
	  constructor, the string argument of the most recent call to a	setter
       overload	of
	  str(), or from a write operation. A typical implementation that uses
       over-allocation
	  maintains a high-watermark pointer to	track the end of the  initial-
       ized part of the
	  buffer  and this overload returns the	characters from	pbase()	to the
       high-watermark
	  pointer.

	  Equivalent	to     return	  std::basic_string<CharT,     Traits,
       (since C++20)
	  Allocator>(view(), get_allocator());.

	  2)  Same  as	(1),  except  that a is	used to	construct the returned
       std::basic_string.
	  Equivalent   to   return   std::basic_string<CharT,	Traits,	  SAl-
       loc>(view(), a);.
	  This	overload  participates	in  overload resolution	only if	SAlloc
       meets the
	  requirements of Allocator.
	  3) Creates a std::basic_string object	as if by move constructing  it
       from *this's
	  underlying character sequence	in buf.	buf may	need to	be adjusted to
       contain the
	  same	content	 as in (1) at first. After that, sets buf to empty and
       calls
	  init_buf_ptrs(), then	returns	the std::basic_string object.
	  4) Replaces the underlying character sequence	as if by buf = s, then
       calls
	  init_buf_ptrs().
	  5) Same as (4), except the type of s's allocator is not Allocator.
	  This	overload  participates	in   overload	resolution   only   if
       std::is_same_v<SAlloc,
	  Allocator> is	false.
	  6)  Replaces	the  underlying	 character  sequence  as  if  by buf =
       std::move(s), then
	  calls	init_buf_ptrs().
	  7) Implicitly	converts t to a	string	view  sv  as  if  by  std::ba-
       sic_string_view<CharT,
	  Traits>  sv =	t;, then replaces the underlying character sequence as
       if by buf = sv,
	  then calls init_buf_ptrs().
	  This overload	participates in	overload resolution only if
	  std::is_convertible_v<const StringViewLike&,
				std::basic_string_view<CharT,	Traits>>    is
       true.

Parameters
	  s - a	std::basic_string object holding the replacement character se-
       quence
	  t  -	an  object (convertible	to std::basic_string_view) holding the
       replacement
	      character	sequence
	  a - allocator	to use for all	memory	allocations  of	 the  returned
       std::basic_string

Return value
	  1-3)	A  std::basic_string  object  holding this buffer's underlying
       character sequence.
	  4-7) (none)

Notes
	  This	 function   is	  typically    accessed	   through    std::ba-
       sic_istringstream::str(),
	  std::basic_ostringstream::str(), or std::basic_stringstream::str().

		  Feature-test macro	      Value    Std		  Fea-
       ture
	  __cpp_lib_sstream_from_string_view   202306L	 (C++26)   Interfacing
       string streams with
							     std::string_view

Example
       // Run this code

	#include <iostream>
	#include <sstream>

	int main()
	{
	    int	n;

	    std::istringstream in;  // could also use in("1 2")
	    in.rdbuf()->str("1 2"); // set the get area
	    in >> n;
	    std::cout << "after	reading	the first int from \"1 2\", the	int is
       "
		      << n << ", str() = \"" <<	in.rdbuf()->str()  <<  "\"\n";
       // or in.str()

	    std::ostringstream out("1 2");
	    out	<< 3;
	    std::cout << "after	writing	the int	'3' to output stream \"1 2\""
		      << ", str() = \""	<< out.str() <<	"\"\n";

	    std::ostringstream ate("1 2", std::ios_base::ate); // C++11
	    ate	<< 3;
	    std::cout << "after	writing	the int	'3' to append stream \"1 2\""
		      << ", str() = \""	<< ate.str() <<	"\"\n";
	}

Output:
	after reading the first	int from "1 2",	the int	is 1, str() = "1 2"
	after writing the int '3' to output stream "1 2", str()	= "3 2"
	after writing the int '3' to append stream "1 2", str()	= "1 23"

	  Defect reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	    DR	      Applied	  to		   Behavior    as    published
       Correct behavior
			     1.	overload (1) did not specify the content
	  LWG 432 C++98	     of	the underlying character sequence	  both
       specified
			     2.	overload (4) did not specify how the
			     input and output sequences	are initialized
			     overload (4) set epptr() to point one past
	  LWG	    562	      C++98	       the	 last	    underlying
       epptr() can be set
			     character	if bool(mode & std::ios_base::out) be-
       yond that position
			     ==	true

See also
		  gets or sets the contents of underlying string device	object
	  str	       (public	    member	function      of      std::ba-
       sic_stringstream<CharT,Traits,Allocator>)

	  view	  obtains a view over the underlying character sequence
	  (C++20) (public member function)

http://cppreference.com		  2024.06.10	  std::basic_stringbuf::str(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::stringbuf::str&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help