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();
}
相关推荐
quantdash_cc2 分钟前
Pandas 处理分钟级股票行情:从原始数据清洗到 K 线聚合
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
yu_zhidun8 分钟前
企业电脑监控软件怎么选:别只看功能清单,先看这 6 个底层能力
开发语言·电脑·php·域智盾系统
把我格子衫拿来16 分钟前
VTK 9.5 与 Qt 6 联合开发:从嵌入三维窗口到可维护的桌面架构
c++·python·qt·vtk·三维可视化
无忧.芙桃41 分钟前
C++语言原理与实践(十六):多态机制讲解
开发语言·c++·多态
李纲明1 小时前
WordPress 白屏排查手册:关插件、换主题、开调试、查 PHP(附停手信号)
开发语言·php·wordpress·故障排查·白屏·插件冲突
ShineWinsu1 小时前
对于JavaScript:JavaScript基础语法的解析
开发语言·前端·javascript·面试·web·基础语法·循环
普通人62 小时前
php+html+canvas实现树状打开的结构
开发语言·javascript·html5·1024程序员节
wuminyu2 小时前
JMM学习总结:深入理解happens-before关系
java·linux·c语言·jvm·c++
电商API_180079052472 小时前
反向海淘多币种结算:汇率该在哪个时点被冻结
java·开发语言·数据库·跨境电商·1688 api
xxwl5853 小时前
区域赛分类题解
c++·笔记·学习·算法