c++读写文件 *** 作

c++读写文件 *** 作,第1张

程序的运行产生的数据都是临时数据,不能持久的保存,一旦程序运行结束数据就会被释放。

在C++中对文件进行 *** 作必须包含头文件;

对文件 *** 作的类

fstream:可读可写 *** 作ifstream:只能读 *** 作ofstream:只能写 *** 作

#inclass="superseo">clude
#include//包含头文件
using namespace std;
int main()
{
	ofstream ofs;//创建流对象  ->往文件里写
	ofs.open("123.txt");//打开文件123.txt如果没有会自动创建,
	ofs << "我们可以写入文件了!";
	ofs.close();//关闭文件


	return 0;
}

文件ofs.open("123.txt",打开方式)

文件的打开方式

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

#include
#include//包含头文件
using namespace std;
int main()
{
	ofstream ofs;//创建流对象  ->往文件里写
	ofs.open("123.txt",ios::app);//打开文件123.txt如果没有会自动创建,
	ofs << "我们可以写入文件了!";
	ofs << "啊哈!我又写了一行";//这行会追加在上一行后面
	ofs.close();//关闭文件


	return 0;
}

我们将文件中写好的数据读出

第一种读法

#include
#include//包含头文件
using namespace std;
int main()
{
	ifstream ifs("123.txt", ios::in);//创建流对象并按指定方式打开;ifstream ifs;ifs.open("123.txt",ios::in)等价
	if (!ifs.is_open())
	{
		cout << "文件不存在" << endl;
	}
	char arr[1024] = { 0 };
	while (ifs >> arr)
	{
		cout << arr << endl;
	}
	ifs.close();
	return 0;
}

第二种读法

#include
#include//包含头文件
using namespace std;
int main()
{
	ifstream ifs("123.txt", ios::in);
	if (!ifs.is_open())
	{
		cout << "文件不存在" << endl;
	}
	char arr[1024] = { 0 };
	while (ifs.getline(arr, sizeof(arr)))//按行读取
	{
		cout << arr << endl;
	}
	ifs.close();
	return 0;
}

 

 第三种字符串读取

#include
#include
#include//包含头文件
using namespace std;
int main()
{
	ifstream ifs("123.txt", ios::in);
	if (!ifs.is_open())
	{
		cout << "文件不存在" << endl;
	}
	string arr;
	while (getline(ifs, arr))
	{
		cout << arr << endl;
	}
	
	ifs.close();
	return 0;
}

 

二进制读写 文件

read()它属于ifs的成员函数,读取时需要调用write()它属于ofs的成员函数,写入时需要调用
#include
#include
#include//包含头文件
using namespace std;
struct student
{
	string name;
	int age;
};
int main()
{
	ofstream ofs("12.txt", ios::out | ios::binary);
	student one = { "小明",12 };
	ofs.write((const char*)&one,sizeof(one));//我先将小明信息存入并关闭文件
	ofs.close();
	ifstream ifs("12.txt", ios::in | ios::binary);//我打开文件进行读取
	if (!ifs.is_open())
	{
		cout << "文件不存在" << endl;
	}
	ifs.read(( char*)&one, sizeof(one));
	cout <<"姓名:"<< one.name <<"年龄:"<< one.age << endl;
	ifs.close();
	return 0;
}

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

原文地址: http://outofmemory.cn/web/990391.html

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

发表评论

登录后才能评论

评论列表(0条)

保存