八、文件操作
1. C++读写文件操作
C++中对于文件的操作,主要是用以下几个类来支持,它们分别是:
- ofstream: 写操作(输出)的文件类 (由ostream引申而来)
- ifstream: 读操作(输入)的文件类(由istream引申而来)
- fstream: 可同时读写操作的文件类 (由iostream引申而来)
它们都需要包含头文件:
#include <fstream>
依旧像C语言那样,对文件的读写操作也是三个步骤,分别是:
- 打开文件
- 读写文件
- 关闭文件
不一样的是,C++中对文件的读写操作所用到的函数都在以上三个类中的方法,充分体现面向对象的设计思想。
2. C++如何打开文件
C++如何打开文件? 这里需要用到在fstream类中的成员函数open()
实现打开文件的操作,open函数是istream、ostream、fstream的成员函数,它的原型如下:
void open(const char *filename, ios::openmode mode);
- 第一个参数filename表示要打开的文件路径
- 第二个参数mode表示打开文件的模式,有如下:
参数 | 作用 |
---|---|
ios::in | 为输入(读)而打开文件 |
ios::out | 为输出(写)而打开文件 |
ios::ate | 初始位置:文件尾 |
ios::app | 所有输出附加在文件末尾 |
ios::trunc | 如果文件已存在则先删除该文件 |
ios::binary | 二进制方式 |
除此以外,还可以用过‘|’或运算符将多个参数进行如何使用,如:
ofstream out;
out.open("dotcpp.txt", ios::out|ios::binary) //以二进制模式打开,进行写数据
3. C++读文件操作
C++的输入输出用到了iostream头文件,这个头文件名字意思就是io流,现在学习的文件读写,其实也是流,叫做文件流,因此他的头文件需要包含fstream,它定义了三个类,负责文件的读、写、读写操作,分别如下:
类型 | 意义 |
---|---|
ofstream | (out) 表示输出文件流,用于创建文件并向文件写入信息。 |
ifstream | (in)表示输入文件流,用于从文件读取信息。 |
fstream | (file)表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。 |
如果我们想读一个文件的内容,那么就可以使用ifstream或fstream类型即可:
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
char data[100];
// 以读模式打开文件(对于系统而言是读)
ifstream file;
file.open("F:\\testcpp.txt");
file >> data;
cout<<data;
// 关闭打开的文件
file.close();
return 0;
}
输出结果
注意,对于C/C++而言,它可以打开读写的文件并非只能是.txt
文件,事实上任何后缀文件都可以打开、读写、关闭操作。
4. C++写文件操作
接上篇,对于要用C++进行写文件,则可以用ofsteam或fstream类型,依次经过打开、写数据、关闭三个步骤完成。
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
char data[100] = "1234567890";
// 以写模式打开文件(从系统的角度来看是写入)
ofstream file;
file.open("F:\\testcpp.txt");
file << data;
cout<<data;
// 关闭打开的文件
file.close();
return 0;
}
输出结果:
对于即便F盘下不存在testcpp.txt这个文件的情况下,运行此程序仍然会自动新建并向其中写入data的数据
5. C++如何关闭文件
在结束相关操作之后,只需要在最后调用close成员函数即可,即会断开文件与程序的关联,结束操作。
该close函数是ifstream、ofstream、fstream的成员函数,在使用时用打开的文件对象通过.
直接调用即可。
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
char data[100] = "1234567890";
// 以写模式打开文件(从系统的角度来看是写入)
ofstream file;
file.open("F:\\testcpp.txt");
file << data;
cout<<data;
// 调用close函数,关闭打开的文件
file.close();
return 0;
}
注意,在实际进行文件操作的过程中,对于打开的文件,要及时调用 close() 方法将其关闭,否则很可能会导致读写文件失败。