Files
2025-10-25 03:02:53 +03:00

116 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[filebuf.cons]
# 31 Input/output library [[input.output]](./#input.output)
## 31.10 File-based streams [[file.streams]](file.streams#filebuf.cons)
### 31.10.3 Class template basic_filebuf [[filebuf]](filebuf#cons)
#### 31.10.3.2 Constructors [filebuf.cons]
[🔗](#lib:basic_filebuf,constructor)
`basic_filebuf();
`
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L11093)
*Effects*: Initializes the base class withbasic_streambuf<charT, traits>() ([[streambuf.cons]](streambuf.cons "31.6.3.2Constructors"))[.](#1.sentence-1)
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L11098)
*Postconditions*: is_open() == false[.](#2.sentence-1)
[🔗](#lib:basic_filebuf,constructor_)
`basic_filebuf(basic_filebuf&& rhs);
`
[3](#3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L11109)
*Effects*: It is implementation-defined whether the sequence pointers in *this (eback(), gptr(), egptr(),pbase(), pptr(), epptr()) obtain
the values which rhs had[.](#3.sentence-1)
Whether they do or not, *this and rhs reference separate buffers (if any at all) after the
construction[.](#3.sentence-2)
Additionally *this references the file
which rhs did before the construction, andrhs references no file after the construction[.](#3.sentence-3)
The
openmode, locale and any other state of rhs is also
copied[.](#3.sentence-4)
[4](#4)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L11123)
*Postconditions*: Let rhs_p refer to the state ofrhs just prior to this construction and let rhs_a refer to the state of rhs just after this construction[.](#4.sentence-1)
- [(4.1)](#4.1)
is_open() == rhs_p.is_open()
- [(4.2)](#4.2)
rhs_a.is_open() == false
- [(4.3)](#4.3)
gptr() - eback() == rhs_p.gptr() - rhs_p.eback()
- [(4.4)](#4.4)
egptr() - eback() == rhs_p.egptr() - rhs_p.eback()
- [(4.5)](#4.5)
pptr() - pbase() == rhs_p.pptr() - rhs_p.pbase()
- [(4.6)](#4.6)
epptr() - pbase() == rhs_p.epptr() - rhs_p.pbase()
- [(4.7)](#4.7)
if (eback()) eback() != rhs_a.eback()
- [(4.8)](#4.8)
if (gptr()) gptr() != rhs_a.gptr()
- [(4.9)](#4.9)
if (egptr()) egptr() != rhs_a.egptr()
- [(4.10)](#4.10)
if (pbase()) pbase() != rhs_a.pbase()
- [(4.11)](#4.11)
if (pptr()) pptr() != rhs_a.pptr()
- [(4.12)](#4.12)
if (epptr()) epptr() != rhs_a.epptr()
[🔗](#lib:basic_filebuf,destructor)
`virtual ~basic_filebuf();
`
[5](#5)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L11151)
*Effects*: Callsclose()[.](#5.sentence-1)
If an exception occurs during the destruction of the object, including the call to close(), the exception is caught but not rethrown (see [[res.on.exception.handling]](res.on.exception.handling "16.4.6.14Restrictions on exception handling"))[.](#5.sentence-2)