C++的文件操作

程序运行时产生的数据都属于临时数据,程序一旦运行解释都会被释放

通过文件可以将数据持久化

c++中文件操作需要报刊头文件<fstream>

文件类型分为两种:

1.文本文件 —ASCII码存储

2.二进制文件 —二进制形式存储

操作文件的三大类:

1.写操作:ofstream

2.读操作:ifstream

3.读写操作:fstream

文本文件

写文件

步骤:

1.包含头文件

#include <fstream>

2.创造流对象

ofstream ofs;

3.打开文件

ofs.open("文件路径",打开方式);

4.写数据

ofs<<"写入的数据";

5.关闭文件

ofs.close()

文件打开方式

打开方式 解释
ios::in 为读文件而打开文件
ios::out 为写文件而打开文件
ios::ate 初始位置:文件尾
ios::app 追加方式写文件
ios::trunc 如果文件存在先删除,再创建
ios:: binary 二进制方式

注意:文件打开方式可以配合使用,利用|操作符

例如:用二进制方式写文件iOS::binary | ios::out

读文件

步骤:

1.包含头文件

#include <fstream>

2.创建流对象

ifstream ifs;

3.打开文件并判断文件是否打开成功

ifs.open("文件路径",打开方式)

4.读数据

四种读取方式

5.关闭文件

ifs,close()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void test()
{
ifstream ifs;
ifs.open("test.txt",ios::in);
if(!ifs.is_open())//判断文件是否存在,路径是否错误
{
cout<<"文件打开失败"<<endl;
return;//结束后续读数据的操作
}
//读数据
//第一种 利用数组
char buf[1024]={0};
while(ifs>>buf)
{
cout<<buf<<endl;
}
//第二种 利用数组
char buf[1024]={0};
while(ifs.getline(buf,sizeof(buf)))
{
cout<<buf<<endl;
}
//第三种 string
string buf;
while(getline(ifs,buf))
{
cout<<buf<<endl;
}
//第四种 (不推荐)字符
char c;
while(c=ifs.get()!=EOF)
{
cout<<c;
}
ifs.close();
}
int main()
{
test();
return 0;
}

二进制文件

打开方式要指定为ios::binary

写文件

二进制写文件主要利用流对象调用成员函数write

基本语法:ofstream& whrite((const char*)&buffer,int len)

读文件

而简直顿文件主要利用流对象调用成员函数read

函数原型:istream& read(char*buffer,int len)