c++文件操作

本文详细介绍了C++中如何进行文本文件和二进制文件的读写操作。首先,展示了如何使用fstream库创建流对象,以文本模式打开、写入和关闭文件。接着,讨论了不同的文件打开方式,如ios::in、ios::out、ios::binary等。在读文件部分,列举了几种不同的读取方法。最后,文章演示了二进制文件的写入和读取,包括结构体数据的处理。
摘要由CSDN通过智能技术生成

一,文本文件

1,写文件

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

文件打开方式

打开方式解释
ios::in为读文件打开文件
ios::out为了写文件而打开文件
iOS::ate初始位置:文件尾
ios:trunc如果文件存在先删除再创建
ios::binary二进制方式

打开方式可以配合使用,用|操作符
例如: 用二进制方式写文件:ios::binary| ios::out
代码展示:

#include<fstream>
#include<iostream>
using namespace std;
void text1()
{
	//包含头文件
	//创建流对象
	ofstream ofs;
	//指定打开方式
	ofs.open("C:\\Users\\Lenovo\\Desktop\\code\\c++\\mytext.txt", ios::out);
	ofs << "这是我的第一个文件操作" << endl;
	ofs << "helloworld" << endl;
	ofs.close();

	return;
}
int main()
{
	text1();
	return 0;
}

编译运行之后便会在对应的文件之中写入相应的文件内容
在这里插入图片描述

2,读文件

读文件的步骤如下:

  1. 包含头文件
    #include
  2. 创建流对象: ifstream ifs;
  3. 打开文件并判断文件是否打开成功: ifs.open(“文件路径”,打开方式);
  4. 读数据: 四种读数据的方式
  5. 关闭文件:ifs close();
  6. 实际上就是将文件中的内容用代码之中的字符串,数组,字符来存储
#include<fstream>
#include<iostream>
#include<string>
using namespace std;
void text1()
{
	//包含头文件
	//创建流对象
	ofstream ofs;
	//指定打开方式
	ofs.open("C:\\Users\\Lenovo\\Desktop\\code\\c++\\mytext.txt", ios::out);
	ofs << "这是我的第一个文件操作" << endl;
	ofs << "helloworld" << endl;
	ofs.close();
	return;
}
void text2()
{
	ifstream ifs;
	ifs.open("C:\\Users\\Lenovo\\Desktop\\code\\c++\\mytext.txt", ios::in);
	if (!ifs.is_open())
	{
		cout << "运行失败" << endl;
		return;
	}
	//读数据
	char buf[1023];
	memset(buf, 0, sizeof(buf));
	/*while (ifs.getline(buf, sizeof(buf)))
	{
		cout << buf << endl;//遇到空格不会换行
	}*/
	//<<会把空格当成终止条件导致无法输出空格信息
	/*while (ifs >> buf)
	{
		cout << buf << endl;//遇到空格会换行
	}*/
	string Buf;
	/*while (getline(ifs, Buf))
	{
		cout << Buf << endl;
	}*/
	char c;
	while ((c = ifs.get()) != EOF)//EOF end of file
	{
		cout << c;
	}
	ifs.close();
}
int main()
{
	text2();
	return 0;
}

二,二进制文件

以二进制的方式对文件进行读写操作
打开方式指定为ios::binary

写文件

  • 二进制方式写文件主要利用流对象调用成员函数write
  • 函数原型:ostream& write(const char* buffer,int len);
  • 参数解释:字符指针buffer指向内存之中的一段储存空间愣是读写的字节数

读文件

  • string类型的读取要用字符数组代替
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class person 
{
public:
	int age;
	char name[100];
};
void write()
{
	ofstream ofs;
	//二进制方式打开并写
	ofs.open("C:\\Users\\Lenovo\\Desktop\\code\\c++\\binary.txt", ios::out | ios::binary);
	person p = { 18,"罗亮" };
	ofs.write((const char*)&p, sizeof(person));
	ofs.close();
}
void read()
{
	fstream ifs;
	ifs.open("C:\\Users\\Lenovo\\Desktop\\code\\c++\\binary.txt", ios::in | ios::binary);
	//创建一个p用于接收二进制文件之中的信息
	if (!ifs.is_open())
	{
		cout << "无法打开" << endl;
		return;
	}
	person P;
	//读取文件的内容
	ifs.read((char *)&P, sizeof(P));
	//关闭文件
	cout << P.age << P.name << endl;
	ifs.close();
	return;
}
int main()
{
	write();
	read();
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值