table of contents
        
      
      
    | std::basic_istream::basic_istream(3) | C++ Standard Libary | std::basic_istream::basic_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 <iostream>
  
   #include <sstream>
  
   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
| 2024.06.10 | http://cppreference.com |