std::basic_filebuf<CharT,Traits>::open

< cpp‎ | io‎ | basic filebuf
std::basic_filebuf<CharT, Traits>* open( const char* s,
                                         std::ios_base::openmode mode )
(1)
std::basic_filebuf<CharT, Traits>* open( const std::string& str,
                                         std::ios_base::openmode mode )
(2) (C++11 起)
std::basic_filebuf<CharT, Traits>* open( const std::filesystem::path& p,
                                         std::ios_base::openmode mode )
(3) (C++17 起)
std::basic_filebuf<CharT, Traits>* open( const std::filesystem::path::value_type* s,
                                         std::ios_base::openmode mode )
(4) (C++17 起)

打开拥有给定名称( sp.c_str() (C++17 起)str.c_str() ,取决于重载)的文件。

仅若 std::filesystem::path::value_typechar 才提供重载 (4)

(C++17 起)

如同通过以按下列方式确定的第二参数 (mode) 调用 std::fopen 打开文件:

mode openmode & ~ate 若文件已存在的动作 若文件不存在的动作
"r" in 从头读取 打开失败
"w" out, out|trunc 销毁内容 创建新文件
"a" app, out|app 后附到文件 创建新文件
"r+" out|in 从头读取 错误
"w+" out|in|trunc 销毁内容 创建新文件
"a+" out|in|app, in|app 写入到结尾 创建新文件
"rb" binary|in 从头读取 打开失败
"wb" binary|out, binary|out|trunc 销毁内容 创建新文件
"ab" binary|app, binary|out|app 写入结尾 创建新文件
"r+b" binary|out|in 从头读取 错误
"w+b" binary|out|in|trunc 销毁内容 创建新文件
"a+b" binary|out|in|app, binary|in|app 写入到结尾 创建新文件

openmode 不是列出的模式之一,则 open() 失败。

若打开操作成功且 openmode & std::ios_base::ate != 0 (设置了 ate 位),则重寻位文件位置到文件尾,如同用调用 std::fseek(file, 0, SEEK_END) ,其中 file 是调用 fopen 返回的指针。若寻位失败,则调用 close() 并返回空指针以指示失败。

若关联文件已打开,则立即返回空指针。

参数

s, str, p - 要打开的文件名; s 必须指向空终止字符串
openmode - 文件打开模式, std::ios_base 模式的二进制或

返回值

成功时为 this ,失败时为空指针。

注意

常由 std::basic_fstream 的构造函数或 open() 成员函数调用 open()

示例

参阅

检查关联文件是否打开
(公开成员函数)
冲入放置区缓冲区并关闭关联的文件
(公开成员函数)