std::freopen
来自cppreference.com
定义于头文件 <cstdio>
|
||
首先,试图关闭与 stream
关联的文件,忽略任何错误。然后,若 filename
非空,则试图用 mode
打开 filename
所指定的文件,如同用 fopen ,然后将该文件与 stream
所指向的文件流关联。若 filename
为空指针,则函数试图重打开已与 stream
关联的文件(此情况下是否允许模式改变是实现定义的)。
参数
filename | - | 要关联文件流到的文件 | ||||||||||||||||||||||||||||||||||||||||||||||||||
mode | - | 确定新文件打开模式的空终止字符串
| ||||||||||||||||||||||||||||||||||||||||||||||||||
stream | - | 要修改的文件流 |
返回值
成功时为 stream
,失败时为空指针。
注解
freopen
是一旦由 I/O 操作或 std::fwide 建立面向后,改变流窄/宽面向的唯一方式。
freopen
的 Microsoft CRT 版本在 filename
为空指针时不支持任何模式更改并将它当作错误(见文档)。可行的替代方案是非标准函数 _setmode()
。
示例
下列代码重定向 stdout
到文件
运行此代码
#include <cstdio> int main() { std::printf("stdout is printed to console\n"); if(std::freopen("redir.txt", "w", stdout)) { std::printf("stdout is redirected to a file\n"); // 这被写入 redir.txt std::fclose(stdout); } }
输出:
stdout is printed to console
参阅
打开文件 (函数) | |
关闭文件 (函数) |