大家好,这是我第一次写博客,请大家多多支持!
本文是作者原创文章,写了好几个小时,所以麻烦转载请注明出处!
目录freopen重定向fstream文件流freopen 重定向
使用方法:
freopen(“in.txt”,“r”,stdin);//从in.txt读入
freopen(“out.txt”,“w”,stdout);//向out.txt输出
freopen(“CON”,“r”,stdin);//从控制台读入
freopen(“CON”,“w”,stdout);//向控制台输出
fclose(stdin);//关闭输入,可以省略,但建议加上
fclose(stdout);//关闭输出
C++中的文件流操作是程序与外部数据交互的重要方式,主要分为标准输入输出流和自定义文件流。标准输入输出流通常是指从键盘输入(stdin)和向屏幕输出(stdout)。`freopen()`函数提供了对这些标准流进行重定向的能力,使得程序可以从不同的文件读取数据或向不同文件写入数据。
`freopen()`函数的基本用法如下:
```cpp
freopen("filename", "mode", stream);
```
- `filename`:要重定向到的文件名。
- `"mode"`:文件打开模式,如`"r"`表示读,`"w"`表示写,`"a"`表示追加,`"r+"`表示读写等。
- `stream`:要重定向的流,通常是`stdin`(标准输入)、`stdout`(标准输出)或`stderr`(标准错误)。
例如,`freopen("in.txt", "r", stdin)`将标准输入重定向到`in.txt`文件,而`freopen("out.txt", "w", stdout)`则将标准输出重定向到`out.txt`。
使用`freopen()`时,注意关闭不再使用的流以释放资源,如`fclose(stdin)`和`fclose(stdout)`。然而,`fclose(stdin)`和`fclose(stdout)`通常不是必须的,因为程序结束时系统会自动关闭它们,但为了良好的编程习惯,建议在不需要的时候关闭流。
C++标准库还提供了`fstream`类来处理自定义文件流。`ifstream`用于读取文件,`ofstream`用于写入文件,而`fstream`则同时支持读写。引入`<fstream>`头文件后,可以创建这些对象来操作文件。
例如,创建一个`ifstream`对象并打开文件`in.txt`进行读取:
```cpp
#include <fstream>
ifstream fin("in.txt");
```
同时,`ofstream`对象可以用来写入文件,例如创建一个`ofstream`对象并打开`out.txt`:
```cpp
ofstream fout("out.txt");
```
`fstream`类提供了一系列成员函数来控制文件流,如`open()`、`close()`、`read()`、`write()`等。例如,`fin.open("in.txt")`和`fout.open("out.txt", ios::out | ios::trunc)`分别用于打开文件,`fin.close()`和`fout.close()`用于关闭文件。
`ios_base::openmode`枚举类型定义了文件打开的不同模式,如`ios::in`、`ios::out`、`ios::app`、`ios::ate`、`ios::trunc`等。这些模式可以通过位或运算符`|`组合使用。
在`fstream`中,可以使用`>>`和`<<`运算符像操作`cin`和`cout`那样方便地进行读写操作。例如,`fin >> a`从文件读取数据到变量`a`,而`fout << a << endl;`将`a`的值写入文件并添加换行符。
`freopen()`函数提供了一种简单的方式来重定向标准输入输出,而`fstream`类提供了更强大、灵活的文件操作能力。选择哪种方法取决于具体的需求,如是否需要在程序运行期间动态改变输入输出源,或者是否需要高级的文件操作功能。
- 1
- 2
前往页