C++之 文件操作(file operation)

目录

引言

一、文本文件

1、写文件

2、读文件

二、二进制文件

1、写文件

2、读文件


引言

程序运行时产生的数据属于临时数据,程序一旦运行结束后,数据也会被释放

通过文件可以将数据保存以持久化

在C++中,对文件进行操作要写头文件


文件打开方式

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

而如果想同时用多种方法:

如 以二进制方式文件尾写文件

ios::binary | ios::ate


而文件的类型分为2种;

一、文本文件

文件以文本的ASCII码形式存储在计算机中

1、写文件

ofstream——写文件 或 fstream

过程:

①写头文件                

②创建流对象            ofstream name;

③指定打开方式        name.open("路径",打开方式);

④写内容                   name<< "内容";

⑤关闭文件                name.close();


例:创建一个文件,并写入内容

int main()
{
	// 创建流对象
	ofstream ofs; // 或fstream
	// 指定打开方式
	ofs.open("ofs.txt", ios::out);
	// 写内容
	ofs << "Joyce" << endl;
	ofs << "Tatina" << endl;
	// 关闭文件
	ofs.close();
	return 0;
}

运行后,我们去源文件目录下找(因为打开方式没有指定要把文件写在哪里,所以创建在默认路径)

C++之 文件操作(file operation)_第1张图片

C++之 文件操作(file operation)_第2张图片


2、读文件

与写文件相似

ifstream——写文件 或 fstream

过程:

①写头文件                                        

②创建流对象                                    ifstream name;

③打开文件,并判断是否成功打开    name.open("路径",打开方式);

④读内容(4种方法)                       name<< "内容";

⑤关闭文件                                        name.close();

// 读文件
void test02()
{
	// 创建流对象
	ifstream ifs; // 或fstream
	// 指定打开方式
	ifs.open("ofs.txt", ios::out);
	// 判断是否打开
	if (!ifs.is_open())
	{
		cout << "文件打开失败!" << endl;
		return;
	}
	// 读内容
	// mode 1
	char buf1[1024] = { 0 };
	while (ifs >> buf1)
	{
		cout << buf1 << endl;
	}
	// mode 2
	char buf2[1024] = { 0 };
	while (ifs.getline(buf2, 1024))
	{
		cout << buf2 << endl;
	}
	// mode 3
	string buf3;
	while (getline(ifs, buf3)) // 全局函数getline
	{
		cout << buf3 << endl;
	}
	// mode 4
	char buf4;
	while ((buf4 = ifs.get()) != EOF) // EOF文件末尾标志
	{
		cout << buf4;
	}
	// 关闭文件
	ifs.close();
}

C++之 文件操作(file operation)_第3张图片

 任意一种输出都是这个


总之,写文件——ofstream,读文件——ifstream,读写文件——fstream


二、二进制文件

以二进制形式对文件进行读写操作

打开方式:ios::binary


1、写文件

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

函数 :ostream& write(const char * buffer,int len);

buffer:指向内存中一段存储空间

len:读写的字节数


class person
{
public:
	char m_name[64];
	int m_age;
};
void test03()
{
	// 创建流对象
	ofstream ofs;
	// 打开文件
	ofs.open("person.txt", ios::out | ios::binary);
	// 或者创建时直接初始化
	// ofstream ofs("person.txt", ios::out | ios::binary);
	// 写文件
	person p = { "Joyce",22 };
	ofs.write((const char*)&p, sizeof(person));
	// 关闭文件
	ofs.close();

}

C++之 文件操作(file operation)_第4张图片

 使用write函数


2、读文件

二进制方式写文件主要通过流对象调用成员函数read

函数 :ostream& read(const char * buffer,int len);

buffer:指向内存中一段存储空间

len:读写的字节数


void test04()
{
	// 创建流对象
	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 << p.m_age << endl;
	// 关闭文件
	ifs.close();
}

C++之 文件操作(file operation)_第5张图片

使用read函数

你可能感兴趣的:(c++,开发语言)