C++中文件的简单读写(IO)

本文介绍了如何在C++中使用ofstream和fstream进行文件操作,包括写入整数数组到temp.txt文件以及读取文件内容并处理空行。作者提供了写入和读取函数示例,并提及了可能遇到的问题及解决方案。
摘要由CSDN通过智能技术生成

一、写文件

#include <iostream>
#inlcude <fstream>

void save(int m, vector<vector<int>> ar)
{
	ofstream ofs;
	if (!ofs.is_open())//文件未打开
	{
		cerr << "temp.txt" << "file open failed" << endl;
        //cerr:输出到标准错误的ostream对象,对应于标准错误流(关联到标准输出设备,通常为显示器),常用于显示程序错误信息;
		return;
	}
	ofs.open("temp.txt", ios::out);//第一个参数为创建或打开文件的地址,第二个参数为操作方式
/*
文件常见的打开方式 :
(1). in 以读的方式打开文件
(2). out 以写的方式打开文件
(3). binary 以二进制方式对文件进行操作
(4). ate 输出位置从文件的末尾开始
(5). app 以追加的方式对文件进行写入
(6). trunc 先将文件内容清空再打开文件
*/
	for (size_t i = 0; i < m; i++)
	{
        //写入文件数据
		ofs << ar[i][0] << " " << ar[i][1] << " " << ar[i][2] << endl;
	}

	ofs.close();
}

二、读文件

void open()
{
	vector<vector<int>> ar;
	fstream File;
	if (!File.is_open())//文件未打开
	{
		cerr << "temp.txt" << "file open failed" << endl;
		return;
	}
	File.open("temp.txt", ios::in);
	int sum = 0;
	int a, b, c;
	while (File >> a >> b >> c)//读取文件中数据,每次循环读取一行数据直至读取完
	{
		ar.push_back({ a,b,c });
		sum++;
	}
	File.close();
}
//注:若读取string数据可用stringstream类
//具体用法可参照以下博客
//原文链接:https://blog.csdn.net/weixin_45867382/article/details/122109133

具体IO细节可以参考以下博客

原文链接:https://blog.csdn.net/DR5200/article/details/118073923

补充:

上述读取文件的操作对于文件中的空行无法进行跳跃,可能会报错

以下为可以跳过空行的代码

void open()
{
	vector<vector<int>> ar;
	fstream File;
	if (!File.is_open())//文件未打开
	{
		cerr << "temp.txt" << "file open failed" << endl;
		return;
	}
	File.open("temp.txt", ios::in);
	int sum = 0;
	int a, b, c;
	while (!File.eof())
	{
		char data[1024];
		File.getline(data, 1024);//将一行数据存入data中
		//跳过空行
		if (strlen(data) == 0)
			break;
		stringstream ss(data);
		ss >> a >> b >> c;
		ar.push_back({ a,b,c });
		sum++;
	}
	File.close();
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值