[ Web Proxy ]
URL:
Viewing: https://ru.cppreference.com/cpp/io/basic_istream/basic_istream [Back]  [Original]

std::basic_istream::basic_istream cppreference.com
cppreference.com

std::basic_istream::basic_istream

cppreference.com

<metanoindex/>

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

1)

basic_istream , , basic_ios::init(sb). gcount() .
:
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.
Google.
. .

2)

, . .
:
The copy constructor is protected, and is deleted. Input streams are not copyable.
Google.
. .

3)

gcount() rhs, gcount () , basic_ios<charT, traits>::move(rhs), basic_ios , rdbuf(), rhs *this. : std::basic_ifstream std::basic_istringstream, , streambuffer.
:
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 streambuffer.
Google.
. .

sb
streambuffer
:
streambuffer to use as underlying device
Google.
. .

#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';
}

:

hello world

Web Proxy Viewer  |  New URL  |  Original Page