std::basic_fstream<CharT,Traits>::open
来自 cppreference.cn
< cpp | io | basic_fstream
void open( const char* filename, = std::ios_base::in | std::ios_base::out ); |
(1) | |
void open( const std::filesystem::path::value_type* filename, = std::ios_base::in | std::ios_base::out ); |
(2) | (C++17 起) |
void open( const std::string& filename, = std::ios_base::in | std::ios_base::out ); |
(3) | (C++11 起) |
void open( const std::filesystem::path& filename, = std::ios_base::in | std::ios_base::out ); |
(4) | (C++17 起) |
打开文件,并将文件流与名为 filename 的文件关联起来。
成功时调用 clear()。失败时调用 setstate(failbit)。
1,2) 实际调用 rdbuf()->open(filename, mode) (关于该调用的效果的详细信息,请参阅 std::basic_filebuf::open)。 重载 (2) 仅在
std::filesystem::path::value_type
不是 char 时提供。(C++17 起)3,4) 实际调用 (1,2),如同通过 open(filename.c_str(), mode)。
目录 |
[编辑] 参数
filename | - | 要打开的文件名 | ||||||||||||||||
mode | - | 指定流的打开模式。它是一个 位掩码类型,定义了以下常量:
|
[编辑] 返回值
(无)
[编辑] 示例
运行此代码
#include <fstream> #include <iostream> #include <string> int main() { std::string filename = "example.123"; std::fstream fs; fs.open(filename); if (!fs.is_open()) { fs.clear(); fs.open(filename, std::ios::out); // create file fs.close(); fs.open(filename); } std::cout << std::boolalpha; std::cout << "fs.is_open() = " << fs.is_open() << '\n'; std::cout << "fs.good() = " << fs.good() << '\n'; }
[编辑] 缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 发布时的行为 | 正确的行为 |
---|---|---|---|
LWG 22 | C++98 | 成功打开后错误状态如何变化不清楚 | 错误状态未改变 |
LWG 409 | C++98 | 成功打开后错误状态未改变 | 已清除[1] |
LWG 460 | C++98 | 重载 (1) 中 mode 的默认参数 缺失(它存在于 概要 中) |
已添加 |
- ↑ LWG 问题 #22 的决议被覆盖。
[编辑] 另请参见
检查流是否关联了文件 (公共成员函数) | |
关闭关联的文件 (公共成员函数) | |
打开一个文件并将其配置为关联字符序列 ( std::basic_filebuf<CharT,Traits> 的公共成员函数) |