描述一个对象,该对象可控制将元素和编码对象插入到 basic_filebuf< Elem, Tr> 类的流缓冲区的操作,其中 Elem 类型的元素的字符特征由 Tr 类确定。 有关详细信息,请参阅 basic_filebuf。
语法
template <class Elem, class Tr = char_traits<Elem>>
class basic_ofstream : public basic_ostream<Elem, Tr>
参数
Elem
文件缓冲区的基本元素。
Tr
文件缓冲区的基本元素的特征(通常是 char_traits<Elem>)。
备注
当将 basic_ofstream 的 wchar_t 专用化写入文件时,如果在文本模式下打开该文件,则它将编写 MBCS 序列。 内部表示形式将使用 wchar_t 字符的缓冲区。
该对象存储 basic_filebuf< Elem, Tr> 类的对象。
示例
下面的示例演示了如何创建 basic_ofstream 对象和向其写入文本。
// basic_ofstream_class.cpp
// compile with: /EHsc
#include <fstream>
using namespace std;
int main(int argc, char **argv)
{
ofstream ofs("ofstream.txt");
if (!ofs.bad())
{
ofs << "Writing to a basic_ofstream object..." << endl;
ofs.close();
}
}
构造函数
| 构造函数 | 说明 |
|---|---|
basic_ofstream |
创建一个 basic_ofstream 类型的对象。 |
成员函数
| 成员函数 | 说明 |
|---|---|
close |
关闭文件。 |
is_open |
确定文件是否打开。 |
open |
打开文件。 |
rdbuf |
返回存储的流缓冲区的地址。 |
swap |
将此 basic_ofstream 的内容与提供的 basic_ofstream 的内容进行交换。 |
运算符
| 运算符 | 说明 |
|---|---|
operator= |
分配此流对象的内容。 这是一种移动赋值,所涉及的 rvalue reference 不会留下副本。 |
要求
标头:<fstream>
命名空间:std
basic_ofstream::basic_ofstream
创建一个 basic_ofstream 类型的对象。
basic_ofstream();
explicit basic_ofstream(
const char* _Filename,
ios_base::openmode _Mode = ios_base::out,
int _Prot = (int)ios_base::_Openprot);
explicit basic_ofstream(
const wchar_t* _Filename,
ios_base::openmode _Mode = ios_base::out,
int _Prot = (int)ios_base::_Openprot);
basic_ofstream(
basic_ofstream&& right);
参数
_Filename
要打开的文件的名称。
_Mode
ios_base::openmode 中的枚举之一。
_Prot
默认文件打开保护,等同于 _fsopen、_wfsopen 中的 shflag 参数。
right
对 basic_ofstream 对象的右值引用用于初始化此 basic_ofstream 对象。
注解
第一个构造函数通过调用 basic_ostream(sb) 初始化基类,其中 sb 是 basic_filebuf< Elem, Tr> 类的存储对象。 它还可以通过调用 basic_filebuf<Elem, Tr> 来初始化 sb。
通过调用 basic_ostream( sb),第二个和第三个构造函数可初始化基类。 它还可以通过调用 basic_filebuf<Elem, Tr>,然后 sb.open( _Filename, _Mode | ios_base::out) 来初始化 sb。 如果后一个函数返回一个 NULL 指针,构造函数将调用 setstate(failbit)。
第四个构造函数是一个 copy 函数。 它可以初始化具有 right 的内容的对象,将其视为右值引用。
有关详细信息,请参阅basic_ostream、open和setstate。
示例
下面的示例演示了如何创建 basic_ofstream 对象和向其写入文本。
// basic_ofstream_ctor.cpp
// compile with: /EHsc
#include <fstream>
using namespace std;
int main(int argc, char **argv)
{
ofstream ofs("C:\\ofstream.txt");
if (!ofs.bad())
{
ofs << "Writing to a basic_ofstream object..." << endl;
ofs.close();
}
}
basic_ofstream::close
关闭文件。
void close();
备注
此成员函数调用 rdbuf->close。 有关详细信息,请参阅 rdbuf 和 close。
示例
有关使用 close 的示例,请参阅 basic_filebuf::close。
basic_ofstream::is_open
指示文件是否打开。
bool is_open() const;
返回值
如果文件已打开,则为 true,否则为 false。
备注
成员函数返回 rdbuf->is_open。 有关详细信息,请参阅 rdbuf 和 is_open。
示例
// basic_ofstream_is_open.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>
int main( )
{
using namespace std;
ifstream file;
// Open and close with a basic_filebuf
file.rdbuf( )->open( "basic_ofstream_is_open.txt", ios::in );
file.close( );
if (file.is_open())
cout << "it's open" << endl;
else
cout << "it's closed" << endl;
}
basic_ofstream::open
打开文件。
void open(
const char* _Filename,
ios_base::openmode _Mode = 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::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 | ios_base::out)。 如果该函数返回一个 NULL 指针,则该函数调用 setstate(failbit)。
有关详细信息,请参阅rdbuf、open和setstate。
示例
有关使用 open 的示例,请参阅 basic_filebuf::open。
basic_ofstream::operator=
分配此流对象的内容。 这是一种移动赋值,所涉及的 rvalue reference 不会留下副本。
basic_ofstream& operator=(basic_ofstream&& right);
参数
right
对 basic_ofstream 对象的右值引用。
返回值
返回 *this。
备注
成员运算符使用 right 内容替换该对象的内容,被视为右值引用。
basic_ofstream::rdbuf
返回存储的流缓冲区的地址。
basic_filebuf<Elem, Tr> *rdbuf() const
返回值
返回存储的流缓冲区的地址。
示例
有关使用 rdbuf 的示例,请参阅 basic_filebuf::close。
basic_ofstream::swap
交换两个 basic_ofstream 对象的内容。
void swap(basic_ofstream& right);
参数
right
对另一个 basic_ofstream 对象的 lvalue 引用。
注解
此成员函数将此对象的内容与 right 的内容进行交换。