basic_filebuf(); // (1) C++98
basic_filebuf(const basic_filebuf&) = delete; // (2) C++11
basic_filebuf(basic_filebuf&& rhs); // (3) C++11
概要
オブジェクトを構築する。
- (1) : デフォルト構築。ファイルを開いていない状態のオブジェクトを構築する
- (2) : コピー構築。この関数は
delete定義されており、basic_filebufオブジェクトはコピーできない - (3) : ムーブ構築。
rhsが開いていたファイルの所有権を*thisに移動する
効果
- (1) : 基底クラスを
basic_streambuf<CharT, Traits>()で初期化する - (3) :
事後条件
- (1) :
is_open()== false - (3) : コンストラクタ呼び出し前の
rhsの状態をrhs_p、呼び出し後のrhsの状態をrhs_aと表記するis_open()== rhs_p.is_open()rhs_a.is_open()== falsegptr() - eback() == rhs_p.gptr() - rhs_p.eback()egptr() - eback() == rhs_p.egptr() - rhs_p.eback()pptr() - pbase() == rhs_p.pptr() - rhs_p.pbase()epptr() - pbase() == rhs_p.epptr() - rhs_p.pbase()eback()が非ヌルの場合、eback() != rhs_a.eback()gptr()が非ヌルの場合、gptr() != rhs_a.gptr()egptr()が非ヌルの場合、egptr() != rhs_a.egptr()pbase()が非ヌルの場合、pbase() != rhs_a.pbase()pptr()が非ヌルの場合、pptr() != rhs_a.pptr()epptr()が非ヌルの場合、epptr() != rhs_a.epptr()
例
#include <iostream>
#include <fstream>
#include <utility>
int main()
{
{
std::filebuf out;
out.open("test.txt", std::ios_base::out);
out.sputn("Hello", 5);
}
// (1) ファイルを開いていない状態で構築する
std::filebuf a;
std::cout << std::boolalpha << a.is_open() << std::endl;
a.open("test.txt", std::ios_base::in);
// (3) aが開いていたファイルをbに移動する
std::filebuf b = std::move(a);
std::cout << a.is_open() << ' ' << b.is_open() << std::endl;
std::cout << static_cast<char>(b.sbumpc()) << std::endl;
}
出力
false
false true
H
バージョン
言語
- C++98