C++编程——文件操作

文章目录

  • 1. 文本文件
    • 1.1 写文件
    • 1.2 读文件
  • 2. 二进制文件
    • 2.1 写文件
    • 2.2 读文件

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

文件类型分为两种:

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

操作文件的三大类:

  1. ofstream:写操作(o是output的意思,人输出那就写操作)
  2. ifstream:读操作(i是input的意思,人接收输入那就是读操作)
  3. fstream:读写操作

1. 文本文件

1.1 写文件

写文件步骤如下:

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

文件打开方式:

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

注意:文件打开方式可以配合使用,利用|操作符
例如:用二进制方式写文件ios::binary|ios::out

示例:

#include 
using namespace std;
#include  //头文件包含


//文本文件 写文件
void test01()
{
	//包含头文件 fstream	

	//创建流对象
	ofstream ofs;

	//指定打开方式
	ofs.open("./test.txt", ios::out);

	//写内容
	ofs << "姓名:张三" << endl;
	ofs << "性别:男" << endl;
	ofs << "年龄:18" << endl;

	//关闭文件
	ofs.close();
}


int main()
{
	test01();
	system("pause");
	return 0;
}

1.2 读文件

读文件步骤如下:

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

示例:

#include 
using namespace std;
#include  //头文件包含
#include 

//文本文件 读文件
void test01()
{
	//包含头文件

	//创建流对象
	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()
{
	test01();
	system("pause");
	return 0;
}

2. 二进制文件

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

2.1 写文件

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

示例

#include 
using namespace std;
#include  //头文件包含
#include 

//二进制文件 写文件

class Person
{
public:
	char m_Name[64]; //姓名
	int m_Age; //年龄
};

void test01()
{
	//包含头文件 fstream	

	//创建流对象
	ofstream ofs;

	//指定打开方式
	ofs.open("./Person.txt", ios::out|ios::binary);

	//写内容
	Person p = { "张三",18 };
	ofs.write((const char*)&p, sizeof(Person));

	//关闭文件
	ofs.close();
}

	   
int main()
{
	test01();
	system("pause");
	return 0;
}

2.2 读文件

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

示例

#include 
using namespace std;
#include  //头文件包含
#include 

//二进制文件 读文件

class Person
{
public:
	char m_Name[64]; //姓名
	int m_Age; //年龄
};

void test01()
{
	//包含头文件 fstream	

	//创建流对象
	ifstream ifs;

	//打开文件 判断文件是否打开成功
	ifs.open("./Person.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();
	system("pause");
	return 0;
}

注:本文资源来自b站黑马程序员C++课程

你可能感兴趣的:(C++编程,c++)