C++文件 *** 作部分

C++文件 *** 作部分,第1张

文件 *** 作 文件打开方式文本文件写文件读文件 二进制文件写文件读文件
程序运行时所产生的数据都属于临时数据,程序一旦运行结束就会被释放。 通过文件可以将数据持久化。C++中对文件 *** 作需要包含头文件

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

*** 作文件的三大类:ofstream(写 *** 作), ifstream(读 *** 作),fstream(读写 *** 作)。

文件打开方式

文件打开方式可以配合使用,利用 | *** 作符。

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

步骤如下:
step1:包含头文件
step2:创建流对象
step3:打开文件
step4:写数据
step5:关闭文件

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

void test01() {
	//2、创建流对象
	ofstream ofs;
	//3、指定打开方式
	ofs.open("test.txt", ios::out);
		/*
		* ios::in       为读文件而打开文件
		* ios::out      为写文件而打开文件
		* ios::ate      初始位置,文件尾部
		* ios::app      追加方式写文件
		* ios::trunc    如果文件存在,先删除,再创建文件
		* ios::binary   二进制方式
		*/

	//4、写入内容
	ofs << "这是一个写入文件的txt文件";
	//5、关闭文件
	ofs.close();

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

步骤如下:
step1:包含头文件
step2:创建流对象
step3:打开文件并判断文件是否打开成功
step4:读数据(四种方法)
step5:关闭文件

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

void test01() {
	//2、创建流对象
	ifstream ifs;
	//3、打开文件,并且判断是否打开成功
	ifs.open("test.txt", ios::in);
		/*
		* ios::in       为读文件而打开文件
		* ios::out      为写文件而打开文件
		* ios::ate      初始位置,文件尾部
		* ios::app      追加方式写文件
		* ios::trunc    如果文件存在,先删除,再创建文件
		* ios::binary   二进制方式
		*/
	if (!ifs.is_open()) {
		class="superseo">cout << "文件打开失败!" << endl;
		return;
	}
	//4、读数据
	//第一种方法,创建一个数组,依次存放文本内容
	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) {       //EOF = end of file 文件尾
	//	cout << c << endl;
	//}


	//5、关闭文件
	ifs.close();

}
int main() {
	test01();
	system("pause");
	return 0;
}
二进制文件

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

写文件

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

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

class Person {
public:
	char m_name[64];   //这里用char不用string是为了避免一些错误
	int m_age;
};

void test01() {
	//2、创建流对象
	ofstream ofs("person.txt", ios::out | ios::binary);   //本身的构造函数也可以打开文件

	//3、打开文件
	//ofs.open("person.txt",ios::out | ios::binary);   //加上 ios::binary表示是二进制文件

	//4、写入文件
	Person p = {"张三",18};
	ofs.write((const char*)&p,sizeof(Person));  //取p的地址,将它强转成const char*类型

	//5、关闭文件
	ofs.close();
}
int main() {
	test01();
	system("pause");
	return 0;
}
读文件

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

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

class Person {
public:
	char m_name[64];
	int m_age;
};
void test01() {
	//2、创建流对象
	ifstream ifs;
	//3、打开文件 判断文件是否打开成功
	ifs.open("person.txt", ios::in | ios::binary);   //二进制文件加上ios::binary
	if (!ifs.is_open()) {
		cout << "文件打开失败!" << endl;
		return;
	}
	//4、读文件
	Person p;
	ifs.read((char*)&p,sizeof(Person));
	cout << "姓名: " << p.m_name << " 年龄: " << p.m_age << endl;
	//5、关闭文件
	ifs.close();
}
int main() {
	test01();
	system("pause");
	return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/994250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存