文件操作。

简介:

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

文件类型分为两类:

1,文本文件-文件以ASCII码存储在计算机中

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

操作文件三大类:

1,ofstream:写操作

2,ifstream:读操作

3,fstrem:读写操作

一,文本文件-写文件

步骤:

1,包含头文件:#include<fstream>

2,创建流对象:ofstream ofs;

3,打开文件:ofs.open("文件路径",打开方式);

4,写数据 ofs<<"数据";

5,关闭文件 ofs.close();

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

#include<iostream>
using namespace std;
#include<fstream>
void test()
{
	ofstream ofs;
	ofs.open("test.txt", ios::out);//写入文件
	ofs << "姓名:张三" << endl;
	ofs << "性别:男" << endl;
	ofs.close();
}
int main()
{
	test();
	return 0;

}

效果图:

小结:

文件操作必须包括头文件fstream

读文件可以利用ofstream或者fstream

打开文件指定文件路径及打开方法

利用<<可以向文件写入数据

关闭文件

二,文本文件-读文件     

1,包含头文件:include<fstream>

2,创建流对象 ifstream ifs;

3,打开文件并判断文件是否打开成功 ifs.open(“文件路径”,打开方式);

4,读数据 四种方式

4,关闭文件 ifs.close()

#include<iostream>
using namespace std;
#include<fstream>
#include<string>
void test()
{
	ifstream ifs;
	ifs.open("test.txt", ios::in);
	if (!ifs.is_open())
	{
		cout << "文件打开失败" << endl;
		return;
	}
	//第一种
	//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;}*/
	//第四种:不推荐
	/*char c;
	while ((c = ifs.get()) != EOF)
	{
		cout << c;
	}
	ifs.close();*/
}
int main()
{
	test();
	return 0;
}

利用is_open函数可以判断文件是否打开

三,二进制文件--写文件

打开方式要指定为:ios::binary

二进制方式写入文件主要利用流对象调用成员函数write

ostram& write(cinst char*buffer,int len);

参数解释:字符指针buffer指向内存中一段存储空间,len读写的字符数

#include<iostream>
using namespace std;
#include<fstream>
#include<string>
class Person {
public:
	char m_Name[64];
	int m_Age;
};
void test()
{
	//创建输出流对象同时打开文件
	ofstream ofs("person.txt", ios::out | ios::binary);
	Person p = { "张三",18 };
	//写入文件
	ofs.write((const char*)&p, sizeof(p));
}
int main()
{
	test();
	return 0;
}

四,二进制文件--读文件

二进制方式读文件主要利用流对象调用成员函数read

istream&热爱的(char*buffer,int len);

class Person
{
public:
	char m_Name[64];
	int m_Age;
};
void test()
{
	ifstream ifs("person.txt",ios::in | ios::binary);
	if (!ifs.is_open())
	{
		cout << "打开文件失败" << endl;
	}
	Person p;
	ifs.read((char*)&p, sizeof(p));
	cout << "姓名:" << p.m_Name << "年龄:" << p.m_Age;
}
int main()
{
	test();
	return 0;
}

文件输入流对象可以通过read函数,以二进制方式读数据 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值