文件类型
1、文本文件(文件以ASCLL码的形式存储在计算机上)
2、二进制文件(文件以文本二进制形式存在计算机,大部分看不懂)
c++对文件操作要包含头文件
操作文件三大类
1、ofstream:写操作
2、ifstream: 读操作
3、fstream:读写操作
文本文件的写入
步骤如下:
1、包含头文件
#include
2、创建流对象
ofstream ofs;(ofs为变量名随便起)
3、打开文件
ofs.open("文件路径",打开方式);
4、写数据
ofs<<"写出的数据";(和cout<<这个东东差不多,一个往控制台输出一个是往文件里输出,<<这个别搞混了就行)
5、关闭文件
文件打开方式
#include//头文件 #include using namespace std; int main() { ofstream ofs;//创建流对象 ofs.open("text.txt",ios::out);//在cpp文件夹下创建了一个text文本文件; //直接和控制台输出一样的格式 ofs<<"123"<
如果打开方式是iOS::out他每次都是覆盖以前的文件,而不能接着以前文件写入。如果想接着以前文件写入,需要把ios::out换成(ios::out|ios::app)这样就可以了。
#include//头文件 #include using namespace std; int main() { ofstream ofs;//创建流对象 ofs.open("text.txt",ios::out|ios::app);//在cpp文件夹下创建了一个text文本文件; //直接和控制台输出一样的格式 ofs<<"123"< 这是又运行一次结果。
文件的读取
#include//头文件 #include using namespace std; int main() { fstream ifs;//创建流对象 ifs.open("text.txt", ios::in);//读取文件要变成ios::in string a; while (ifs >> a) cout << a << endl; ifs.close();//关闭文件 return 0; } 把刚刚的文件读一下
当然如果本生不存在这个文件你就读不了了,所以我们要加一个函数判断有没有这个文件
#include//头文件 #include using namespace std; int main() { fstream ifs;//创建流对象 ifs.open("text.txt", ios::in);//读取文件要变成ios::in if (ifs.is_open())//打开成功返回true { string a; while (ifs >> a) cout << a << endl; ifs.close();//关闭文件 } else cout << "打开失败" << endl; return 0; } 我把text文件后加了个1很显然没有这个文件
如果文件格式是这样的
那就这样读
#include//头文件 #include using namespace std; int main() { fstream ifs;//创建流对象 ifs.open("text1.txt", ios::in);//读取文件要变成ios::in if (ifs.is_open()) { string a; int b; while (ifs >> a >> b) cout << a << b << endl; ifs.close();//关闭文件 } else cout << "打开失败" << endl; return 0; } 这样就成功了,注意有时候中文汉字读取出会有乱码,这个问题有的私下问我就行。
二进制文件
1、写
#include//头文件 #include using namespace std; int main() { ofstream ofs;//创建流对象 ofs.open("text.txt", ios::out|ios::binary);/写文件要变成ios::out然后加上后面那个 string a="张三"; ofs.write((const char*)&a, sizeof(a));//需要用到write函数 第一个参数是一个const char *的类型第二个是大小 ofs.close(); return 0; } 2、读
#include//头文件 #include using namespace std; int main() { ifstream ifs;//创建流对象 ifs.open("text.txt", ios::in | ios::binary);//读取文件要变成ios::in if (!ifs.is_open()) return 0;//打开失败 char a[100]; ifs.read(a, sizeof(a));//用到read函数第一个是char *的类型 cout << a << endl; ifs.close(); return 0; } 最后,建议二进制文件用char 的数组少用string ,string有一些不确定的因素。
有错误欢迎指出



