30 Input/output library [input.output]

30.9 File-based streams [file.streams]

30.9.2 Class template basic_­filebuf [filebuf]

30.9.2.1 basic_­filebuf constructors [filebuf.cons]

basic_filebuf();

Effects: Создает объект класса basic_­filebuf<charT, traits>, инициализируя базовый класс с помощью basic_­streambuf<charT, traits>() ([streambuf.cons]).

Postconditions: is_­open() == false.

basic_filebuf(basic_filebuf&& rhs);

Effects: Переместите конструкции из rvalue rhs. Это определяется реализация ли указатели последовательности в *this (eback(), gptr(), egptr(), pbase(), pptr(), epptr()) получить значение , которые rhs имели. Независимо от того, работают они или нет, *this и rhs ссылаются на отдельные буферы (если они вообще есть) после построения. Дополнительно *this ссылается на файл, который rhs был создан до построения, и не rhs ссылается на файл после построения. Также копируются режим openmode, locale и любое другое состояние rhs .

Postconditions: Позвольте rhs_­p ссылаться на состояние rhs непосредственно перед этой конструкцией и позвольте rhs_­a ссылаться на состояние rhs сразу после этой конструкции.

  • is_­open() == rhs_­p.is_­open()

  • rhs_­a.is_­open() == false

  • gptr() - 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()

  • if (eback()) eback() != rhs_­a.eback()

  • if (gptr()) gptr() != rhs_­a.gptr()

  • if (egptr()) egptr() != rhs_­a.egptr()

  • if (pbase()) pbase() != rhs_­a.pbase()

  • if (pptr()) pptr() != rhs_­a.pptr()

  • if (epptr()) epptr() != rhs_­a.epptr()

virtual ~basic_filebuf();

Effects: Уничтожает объект класса basic_­filebuf<charT, traits>. Звонки close(). Если во время уничтожения объекта, включая вызов close(), возникает исключение, исключение перехватывается, но не генерируется повторно (см [res.on.exception.handling]. Раздел "Ресурсы" ).