c++文件操作

程序运行时产生的数据都属于临时数据,运行结束后都会被释放

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

c++对文件操作需包含头文件**<fstream>**

文件类型分两种

1、文本文件:文件以文本的ASCLL码形式存储在计算机中

2、二进制文件:文件以二进制 的形式存储在计算机中,用户一般不能直接读懂它们

操作文件的三大类

<ofstream> : 写操作

<ifstream> : 读操作

<fstream> : 读写操作

文本文件

写文件

写文件步骤如下:

1、包含头文件<fstream>

#include<fstream>

2、创建流对象

ofstream ofs;

3、打开文件

ofs.opfen("打开路径",打开方式);

4、读数据

选择读取方式

5、关闭文件

ofs.close()

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

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

代码示例:

cpp 复制代码
void test01() {
	//1.包含头文件 fstream

	//2.创建流对象 ifstream 读文件 ofstream写文件 fstream读写文件
	fstream ofs;

	//3.指定打开方式   对象.open("文件路径",打开方式)
	ofs.open("test.01", ios::out);

	//4.写内容
	ofs << "古月阿刘" << endl;
	ofs << "资质:" << "甲等9成9真元" << endl;
	ofs << ""不过是些许风霜罢了"" << endl;

	//5.关闭文件
	ofs.clear();
}
int main() {
	test01();
}
查看写的文件:

右键咱们的源文件,打开所在文件夹

在源文件的附近就会出现我们打开路径的文件
记事本或者其他方式打开这个文件就可以看到写的东西了

读文件

读文件的操作和写文件很类似

读文件步骤如下:

1、包含头文件<fstream>

#include<fstream>

2、创建流对象

ifstream ifs;

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

ifs.opfen("打开路径",打开方式);

4、读数据

选择读取方式

5、关闭文件

ifs.close()

代码示例:

cpp 复制代码
void test01() {
	//1、包含头文件<fstream>

	//2、创建流对象
	ifstream ifs;

	//3、打开文件 并判断是否打开成功
	ifs.open("test.01", ios::in);
	
	if (!ifs.is_open()) {//is_open()如果成功打开则返回一个true
		cout << "文件打开失败" << endl;
			return;
	}
	//4、读数据
	string buf;
	//getline是一个全局函数
	while (getline(ifs, buf)) {
		cout << buf << endl;
	}
	//5、关闭文件
	ifs.close();
}
int main()
{
	test01();
}

操作完毕要关闭文件

二进制文件

以二进制的方式操作文件

打开方式指定ios::binary

写文件

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

函数原型:ostream& write(const char * buffer , int len);

参数解释:字符指针buffer指向一块内存空间进行写的开始,len表示写的字节数

示例:

cpp 复制代码
//二进制文件(除用内置数据类型外,还可用自定义数据类型)
class person {
public:

	char m_Name[64];//不用string,因为底层逻辑是C语言
	int m_Age;
};
void test01() {
	//1、包含头文件
	//2、创建流对象
	ofstream ofs("person.txt", ios::out | ios::binary);//存在构造函数

	//3、打开文件(二进制方式)
	//ofs.open("person.txt", ios::out | ios::binary);
	//4、写内容
	person per = { "xiaoliu", 19 };
	ofs.write((const char*)&per, sizeof(person));
	//5、关闭文件
	ofs.close();
}
int main()
{
	test01();
}

查看写的文件与文本文件的查看一致, 但我们不能直接看懂它,因为是二进制的方式写入。

总结:文件输出流对象,通过函数write,以二进制方式写数据

读文件

二进制读文件主要通过流对象调用成员函数read

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

参数解释:字符指针buffer指向一块内存空间进行读的开始,len表示读的字节数

示例:

cpp 复制代码
class person {
public:

	char m_Name[64];//不用string,因为底层逻辑是C语言
	int m_Age;
};
void test01() {
	//1、包含头文件
	//2、创建流对象
	ifstream ifs;

	//3、打开文件 判断是否打开成功
	ifs.open("person.txt", ios::in | ios::binary);
	if (!ifs.is_open()) {
		cout << "文件打开失败" << endl;
		return;
	}
	//4、读数据
	person p;
	ifs.read((char*)&p, sizeof(person));
	cout << "姓名:" << p.m_Name << " " << "年龄:" << p.m_Age << endl;
	//5、关闭文件
	ifs.close();
}
int main()
{
	test01();
}
相关推荐
陳土1 分钟前
R语言jiebaR包使用摘要
开发语言·r语言
Evand J2 分钟前
【MATLAB】多无人机编队协同控制与三维航迹规划仿真。障碍物斥力避障,输出编队误差、控制输入、三维轨迹等
开发语言·matlab·无人机
froginwe1119 分钟前
jQuery UI 小部件方法调用
开发语言
信奥胡老师20 分钟前
B3930 [GESP202312 五级] 烹饪问题
开发语言·数据结构·c++·学习·算法
许长安24 分钟前
Redis 跳表实现详解
数据库·c++·经验分享·redis·笔记·缓存
JAVA学习通28 分钟前
安脉盛 软件后端开发实习面经
java·开发语言
sycmancia34 分钟前
Qt——Qt中的事件处理(一)
开发语言·qt
paeamecium34 分钟前
【PAT甲级真题】- Shortest Distance (20)
数据结构·c++·算法·pat考试·pat
Halo_tjn40 分钟前
Java IO流文件操作
java·开发语言
折哥的程序人生 · 物流技术专研43 分钟前
《Java 100 天进阶之路》第23篇:缓冲区数据结构 ByteBuffer
java·开发语言·数据结构·后端·面试·求职招聘