- fstream[meta header]
- std[meta namespace]
- basic_filebuf[meta class]
- function[meta id-type]
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;
}- std::filebuf[link /reference/fstream/basic_filebuf.md]
- out.open[link open.md]
- a.open[link open.md]
- a.is_open()[link is_open.md]
- b.is_open()[link is_open.md]
- out.sputn[link /reference/streambuf/basic_streambuf/sputn.md]
- b.sbumpc()[link /reference/streambuf/basic_streambuf/sbumpc.md]
- std::move[link /reference/utility/move.md]
false
false true
H
- C++98