C++_文件操作_学习笔记

头文件

#include<fstream>

文件类型分两种:
文本文件:以文本ASCII码存储
二进制文件:以二进制存储
操作文件三大类:
ofstream:写操作
ifstream:读操作
fstream:读写操作

1.文本文件读写

1.1写文本文件

写文件基本步骤

#include<fstream> //包含头文件
ofstream ofs; // 创建流对象
ofs.open("路径",打开方式) //打开文件
ofs << "写入的数据"; // 写入数据
ofs.close(); // 关闭文件

打开方式:
ios::in 为读文件而打开
ios::out 为写文件而打开
ios::ate 初始位置:文件尾
ios:app 追加方式写文件
ios::trunc 如果文件存在先删除,再创建
ios::binary 二进制方式
打开方式可以配合使用,例如:ios::binary | ios::out

1.2 读文本文件

读文件基本步骤

#include<fstream> //包含头文件
ifstream ifs; // 创建流对象
ifs.open("路径",打开方式) //打开文件并检查是否顺利打开
if (!ifs.is_open())
{
	cout << "文件打开失败" << endl;
	return;
}
有四种方式读取; // 写入数据
ifs.close(); // 关闭文件

读取数据的方式:

  1. 以字符为单位读取
char buf[1024] = {0};
while(ifs>>buf)
{
	cout << buf << endl; //每一次循环中,buf为每一个char,以空格和换行符划分
}
  1. 以行为单位读取
char buf[1024] = {0};
while (ifs.getline(buf,sizeof(buf)))
{
	cout << buf << endl; 
}
  1. 读取字符串
string buf;
while ( getline(ifs , buf))
{
	cout << buf << endl;
}
  1. 一个个字符去读(不推荐这么干)
char c;
while ((c = ifs.get()) != EOF)
{
	cout << c;
}

2 二进制文件读写

要用ios::binary

2.1写二进制文件

二进制方式写文件主要利用流对象调用成员函数write
ostream& write(char *buffer, int len);

class Person
{
public:
	char m_name[64]; //写二进制数据最好不要用C++的string,要用C的char数组
	int m_age;
};
void test01()
{
	ofstream ofs;

	ofs.open("test.txt", ios::out | ios::binary);
	Person p = { "张三", 18 };
	ofs.write((const char *)&p, sizeof(Person));
	ofs.close();
}
int main()
{
	test01();
	return 0;
}

2.2读二进制文件

二进制方式读文件主要利用流对象调用成员函数read
istream& read(char *buffer, int len);

class Person
{
public:
	char m_name[64]; //写二进制数据最好不要用C++的string,要用C的char数组
	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_age << p.m_name << endl;
	ifs.close();
}
int main()
{
	test01();
	return 0;
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值