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

FreeBSD Manual Pages

  
 
  

home | help
std::basic_...asic_istream(3) C++ Standard Libarystd::basic_...asic_istream(3)

NAME
       std::basic_istream::basic_istream - std::basic_istream::basic_istream

Synopsis
	  explicit  basic_istream(  std::basic_streambuf<CharT,	 Traits>* sb);
       (1)
	  protected:
       (2) (since C++11)
	  basic_istream( const basic_istream& rhs ) = delete;
	  protected:
       (3) (since C++11)
	  basic_istream( basic_istream&& rhs );

	  1) Constructs	the basic_istream object, assigning initial values  to
       the base	class
	  by calling basic_ios::init(sb). The value of gcount()	is initialized
       to zero.

	  2)  The copy constructor is protected, and is	deleted. Input streams
       are not
	  copyable.

	  3) The move constructor copies the value of gcount() from rhs,  sets
       the gcount()
	  value	 of  rhs to zero, and uses basic_ios<CharT, Traits>::move(rhs)
       to move all
	  basic_ios members, except for	the rdbuf(), from rhs into *this. This
       move
	  constructor is protected: it is called by the	move  constructors  of
       movable input
	  stream  classes  std::basic_ifstream	and  std::basic_istringstream,
       which know how to
	  correctly move the associated	stream buffer.

Parameters
	  sb - streambuffer to use as underlying device

Example
       // Run this code

	#include <sstream>
	#include <iostream>

	int main()
	{
	    std::istringstream s1("hello");
	    std::istream  s2(s1.rdbuf());			  //  OK:   s2
       shares the buffer with s1

	//    std::istream s3(std::istringstream("test"));	// ERROR: move
       constructor is protected
	//    std::istream s4(s2);				// ERROR: copy
       constructor is deleted
	    std::istringstream	s5(std::istringstream("world"));  //  OK: move
       ctor called by derived class

	    std::cout << s2.rdbuf() << ' ' << s5.rdbuf() << '\n';
	}

Output:
	hello world

http://cppreference.com		  2022.07.31	 std::basic_...asic_istream(3)

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

home | help