C++文件操作完全指南:从文本读写到二进制文件处理

文本文件

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::app 以追加方式写文件→ 不会清空,写在文件末尾

ios::ate 打开文件后,定位到文件末尾(但可以修改前面内容)

ios::trunc 打开时清空文件内容(默认和 out 一起生效)

ios::binary 以二进制模式打开(不做文本转换)

javascript 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>
using namespace std;
void test01(){
	//1.包含头文件
	//2.创建流对象
	ofstream ofs;
	//3.指定打开方式
	ofs.open("test.txt", ios::out);
	//4.写内容
	ofs << "姓名:张三" << endl;
	ofs << "年龄:18" << endl;
	ofs << "性别:男" << endl;
	//5.关闭
	ofs.close();
}
int main() {
	test01();
}

读文件

1.包含头文件

#include<fstream

2.创建流对象

ifstream ifs;

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

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

4.读数据

四种方式读取

5.关闭文件

ifs.close()

javascript 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
void test01(){
	//1.包含头文件
	//2.创建流对象
	ifstream ifs;
	//3.打开文件 并且判断是否打开成功
	ifs.open("test.txt", ios::in);

	if (!ifs.is_open()) {
		cout << "文件打开失败" << endl;
		return;
	}
	//4.读数据
	//第一种
	 char buf[1024] = { 0 };
	while (ifs >> buf) {
		cout << buf << endl;
	}
	//第二种
	char buf[1024] = { 0 };
	while (ifs.getline(buf, sizeof(buf))) {
		cout << buf << endl;
	}
	//第三种
	string buf;
	while (getline(ifs, buf)) {
		cout << buf << endl;
		//getline结束会返回false或者EOF
	}
	//第四种
	char c;
	while ((c = ifs.get()) != EOF) {
		cout << c;
	}

	//5.关闭文件
	ifs.close();
}
int main() {
	test01();
}

用二进制写文件

javascript 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class person {
public:
	char m_name[100];
	int m_age;
};
void test01(){
	ofstream ofs;
	ofs.open("text.txt", ios::out | ios::binary);
	person p = { "张三",18 };
	ofs.write((const char*)&p, sizeof(p));
	ofs.close();

}
int main() {
	test01();
}

用二进制读文件

javascript 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class person {
public:
	char m_name[100];
	int m_age;
};
void test01(){
	ifstream ifs;
	ifs.open("test.txt", ios::in | ios::binary);
	if (!ifs.is_open()) {
		cout << "文件打开失败" << endl;
		return;
	}
	person p;
	ifs.read((char*)&p, sizeof(person));
	cout << "姓名" << p.m_name << endl;
	cout << "年龄" << p.m_age << endl;
	ifs.close();
}
int main() {
	test01();
}
相关推荐
IvanCodes3 小时前
Python 数据处理(十三):JSON、CSV 与数据序列化
开发语言·python
aramae5 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
qq_2518364577 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
郑州光合科技余经理8 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
知识分享小能手8 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
qq_199886878 小时前
第8板块·第2节:统一内存的高级特性与性能调优
c++·人工智能·gpu算力·cuda
+VX:Fegn08958 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计
阿里嘎多学长9 小时前
2026-09-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
2401_839080549 小时前
C++常见八股
数据结构·c++·算法
qq_1998868710 小时前
第6板块 第2节 CUDA运行时API与驱动API 核心笔记
c++·人工智能·gpu算力