C++文件操作读与写

本文详细介绍了C++中文件操作的基础知识,包括文本文件和二进制文件的读写方法,以及不同文件打开模式的使用。通过实例展示了如何使用ofstream、ifstream和fstream类进行文件的读写,并解释了如何处理二进制文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件操作
程序运行时的产生的数据都属于临时数据,程序一旦运行结束都会被释放,通过文件可以将数据持久化,c++中对文件操作需要包括头文件

文件类型分为两种:
1.文本文件 文件以文本的ASCII码形式存储在计算机
2. 二进制文件 文件以文本的二进制形式储存在计算机中,用户一般不能直接读懂他们

操作文件的三大类:
. ofstream : 写文件
. ifstream : 读文件
. fstream : 读写文件

文本文件
  1. 写文件

1.包含头文件 #include
2. 创建流对象 ofstream ofs;
3.打开文件 ofs.open(“文件路径”,“打开方式”);
4.写数据 ofs<<“写数据”;
5.关闭文件。

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

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

#include<fstream>
void test01(){
	ofstream ofs;  //创建流对象
	ofs.open("leb.txt",ios::out);
	ofs<<"姓名: 张三"<<endl;
	ofs<<"性别: 男"<<endl;
	//关闭文件
	ofs.close();
	
}


读文件

1.包含头文件 #include
2. 创建流对象 ifstream ifs;
3.打开文件 ofs.open(“文件路径”,“打开方式”); 并判断是否打开成功
4.读数据 四种方式读取.
5.关闭文件。 ifs.close();

#include<fstream>
void test01(){
	ifstream ifs;
	ifs.open("leb.txt",ios::in);
	if(!ifs.is_open()){
		cout<<"文件打开失败"<<endl;
		return ;
	}
	//读数据
	//第一种:
		char buf[1024]={0};
		while(ifs>>buf){   //遇见空格就结束, 
			cout<<buf<<endl;
		}
	//第二种
		char buff[1024]={0};
		while(ifs.getline(buf,1024)){ //读一行
			cout<<buff<<endl;		
		}
	//第三种
	string bu;
	while(getline(ifs,bu)){
		cout<<bu<<endl;
	}
	
	//第四种  ,一个一个字符读,不推荐
	char c;
	while((c=ifs.get())!=EOF)    //EOF  文件尾   
	{
		cout<<c;
	}

	ifs.close();


}

二进制文件

以二进制方式对文件进行读写操作;
打开方式要指定为ios::binary;
写文件
二进制方式写文件要利用流对象调用成员函数write;
ostream & write(const char * buffer,int len);
字符串指针buffer指向内存种的一段存储空间,len是读写的字节数.

class person{
	char m_name[64];  //姓名
		int m_age;  

};
void test(){
	ofstream ofs;
	ofs.open("leb.txt",ios::out| ios::binary);
	person p={"张",18};
	ofs.write((const char*)&p,sizeof(person));
	ofs.close();

}

读文件
二进制方式读文件主要利用流对象调用成员函数read;
函数原型 istream &read(char * buffer,int len);
buffer 指向内存种的一段存储空空间,len是读写的字节数.

#include<fstream>
class person{
	char m_name[64];  //姓名
		int m_age;  

};
void test01(){
	ifstream ifs;  //创建流对象
	ifs.open("leb.txt",ios::in | ios::binary);
	Person p;
	ifs.read((char*)&p,sizeof(person)):
	
	
	//关闭文件
	ifs.close();
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值