basic_fstream 类
描述一个对象,该对象使用类 basic_filebuf<Elem
, Tr
> 的流缓冲区来控制元素和编码对象的插入和提取,该流缓冲区具有 Elem
类型的元素,其字符特征由类 Tr
确定。
语法
template <class Elem, class Tr = char_traits<Elem>>
class basic_fstream : public basic_iostream<Elem, Tr>
参数
Elem
文件缓冲区的基本元素。
Tr
文件缓冲区的基本元素的特征(通常是 char_traits
<Elem
>)。
备注
该对象存储 basic_filebuf
<Elem
, Tr
> 类的对象。
注意
fstream 对象的 get 指针和 put 指针不相互独立。 如果 get 指针移动,put 指针也将移动。
示例
下面的示例演示如何创建能够对其进行读取和写入的 basic_fstream
对象。
// basic_fstream_class.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
fstream fs("fstream.txt", ios::in | ios::out | ios::trunc);
if (!fs.bad())
{
// Write to the file.
fs << "Writing to a basic_fstream object..." << endl;
fs.close();
// Dump the contents of the file to cout.
fs.open("fstream.txt", ios::in);
cout << fs.rdbuf();
fs.close();
}
}
Writing to a basic_fstream object...
构造函数
构造函数 | 说明 |
---|---|
basic_fstream | 构造 basic_fstream 类型的对象。 |
成员函数
成员函数 | 说明 |
---|---|
close | 关闭文件。 |
is_open | 确定文件是否打开。 |
open | 打开文件。 |
rdbuf | 将指针类型的已存储流缓冲区的地址返回到 basic_filebuf<Elem , Tr >。 |
swap | 将此对象的内容与另一个 basic_fstream 对象的内容进行交换。 |
要求
标头:<fstream>
命名空间: std
basic_fstream::basic_fstream
构造 basic_fstream
类型的对象。
basic_fstream();
explicit basic_fstream(
const char* _Filename,
ios_base::openmode _Mode = ios_base::in | ios_base::out,
int _Prot = (int)ios_base::_Openprot);
explicit basic_fstream(
const wchar_t* _Filename,
ios_base::openmode _Mode = ios_base::in | ios_base::out,
int _Prot = (int)ios_base::_Openprot);
basic_fstream(basic_fstream&& right);
参数
_Filename
要打开的文件的名称。
_Mode
ios_base::openmode 中的枚举之一。
_Prot
默认文件打开保护,等同于 _fsopen, _wfsopen 中的 shflag 参数。
注解
第一个构造函数通过调用 basic_iostream(sb
) 来初始化基类,其中 sb
是类 basic_filebuf<Elem, Tr> 的存储对象。 它还可以通过调用 basic_filebuf
<Elem, Tr> 来初始化 sb
。
通过调用 basic_iostream
( sb),第二个和第三个构造函数可初始化基类。 它还可以通过调用 basic_filebuf
<Elem, Tr>,然后调用 sb.open(_ Filename, _Mode
) 来初始化 sb
。 如果后一个函数返回一个空指针,构造函数将调用 setstate(failbit
)。
第四个构造函数初始化具有 right
的内容的对象,将其视为右值引用。
示例
有关使用 basic_fstream
的示例,请参阅 streampos。
basic_fstream::close
关闭文件。
void close();
注解
示例
有关如何使用 close
的示例,请参阅 basic_filebuf::close。
basic_fstream::is_open
确定文件是否打开。
bool is_open() const;
返回值
如果文件已打开,则为 true
,否则为 false
。
注解
示例
有关如何使用 is_open
的示例,请参阅 basic_filebuf:: is_open。
basic_fstream::open
打开文件。
void open(
const char* _Filename,
ios_base::openmode _Mode = ios_base::in | ios_base::out,
int _Prot = (int)ios_base::_Openprot);
void open(
const char* _Filename,
ios_base::openmode _Mode);
void open(
const wchar_t* _Filename,
ios_base::openmode _Mode = ios_base::in | ios_base::out,
int _Prot = (int)ios_base::_Openprot);
void open(
const wchar_t* _Filename,
ios_base::openmode _Mode);
参数
_Filename
要打开的文件的名称。
_Mode
ios_base::openmode 中的枚举之一。
_Prot
默认文件打开保护,等同于 _fsopen, _wfsopen 中的 shflag 参数。
注解
成员函数调用 rdbuf -> open(_ Filename, )。 _Mode
如果该函数返回一个空指针,则该函数调用 setstate( failbit
)。
示例
有关如何使用 open
的示例,请参阅 basic_filebuf::open。
basic_fstream::operator=
从指定的流对象向该对象分配内容。 这是涉及不会留下副本的右值的移动赋值运算符。
basic_fstream& operator=(basic_fstream&& right);
参数
right
对 basic_fstream
对象的左值引用。
返回值
返回 *this
。
注解
该成员运算符使用 right 的内容替换该对象的内容,被视为 rvalue 引用。
basic_fstream::rdbuf
将指针类型的已存储流缓冲区的地址返回到 basic_filebuf<Elem, Tr>。
basic_filebuf<Elem, Tr> *rdbuf() const
返回值
已存储流缓冲区的地址。
示例
有关如何使用 rdbuf
的示例,请参阅 basic_filebuf::close。
basic_fstream::swap
交换两个 basic_fstream
对象的内容。
void swap(basic_fstream& right);
参数
right
对 basic_fstream
对象的 lvalue
引用。
备注
该成员函数将此对象的内容与 right 的内容进行交换。