Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::basic_istream<CharT,Traits>::basic_istream

      From cppreference.com
      <cpp‎ |io‎ |basic istream
       
       
       
       
      explicit basic_istream(std::basic_streambuf<CharT, Traits>* sb);
      (1)
      protected:
      basic_istream(const basic_istream& rhs)= delete;
      (2)(since C++11)
      protected:
      basic_istream( basic_istream&& rhs);
      (3)(since C++11)

      1) Constructs thebasic_istream object, assigning initial values to the base class by callingbasic_ios::init(sb). The value ofgcount() 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 ofgcount() fromrhs, sets the gcount() value ofrhs to zero, and usesbasic_ios<CharT, Traits>::move(rhs) to move all basic_ios members, except for therdbuf(), fromrhs into*this. This move constructor is protected: it is called by the move constructors of movable input stream classesstd::basic_ifstream andstd::basic_istringstream, which know how to correctly move the associated stream buffer.

      [edit]Parameters

      sb - streambuffer to use as underlying device

      [edit]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 deletedstd::istringstream s5(std::istringstream("world"));// OK: move ctor called//     by derived class std::cout<< s2.rdbuf()<<' '<< s5.rdbuf()<<'\n';}

      Output:

      hello world
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_istream/basic_istream&oldid=158515"

      [8]ページ先頭

      ©2009-2025 Movatter.jp