浅谈如何使用vector容器实现C++删除或修改txt文件中的某一行

	在C++中不能直接修改文本文件的某一行,但是可以使用复制文件作为一个临时的文本,在复制过程中进行修改删除,然后再进行覆盖。
	可以使用一个临时的txt文件,我这次主要想讲讲利用vector容器
	**1、在类中定义一个vector容器
		例如
		vector<class Cplusplus> CPP;
	2、打开文件
		ifstream ifs;
		ifs.open(CPP_FILE, ios::in);
	3、清空容器,防止容器中有内容
		CPP.clear();
	4、依次将文件中的每一行读出压入容器
		while (ifs >> s.id && ifs>>s.name && ifs>>s.Class && ifs>>s.m_grades && ifs>>s.m_scores && ifs>>s.cal)
	{

		if (_id != s.id)
		{
			CPP.push_back(s);
		}
	}
	5、关闭文件
		ifs.close();
	6、再次打开文件,进行覆盖写入操作
		ofstream ofs;
		ofs.open(CPP_FILE, ios_base::out);
	7、依次将容器中的内容写入txt文件
		for (i=0;i<CPP.size();i++)
	{
		ofs << CPP[i].id <<" "<< CPP[i].name <<" "<< CPP[i].Class <<" "<< CPP[i].m_grades <<" "<< CPP[i].m_scores <<" "<< CPP[i].cal << endl;
	}
	8、关闭文件
		ofs.close();**

下面展示一下完整的代码:

void Teacher::deleteData()
{
	ifstream ifs;
	ifs.open(CPP_FILE, ios::in);
	int _id;
	cout << "请输入你要删除学生的学号:" << endl;
	cin >> _id;
	CPP.clear();
	Cplusplus s;
	while (ifs >> s.id && ifs>>s.name && ifs>>s.Class && ifs>>s.m_grades && ifs>>s.m_scores && ifs>>s.cal)
	{

		if (_id != s.id)
		{
			CPP.push_back(s);
		}
	}
	ifs.close();
	ofstream ofs;
	ofs.open(CPP_FILE, ios_base::out);
	int i;
	for (i=0;i<CPP.size();i++)
	{
		ofs << CPP[i].id <<" "<< CPP[i].name <<" "<< CPP[i].Class <<" "<< CPP[i].m_grades <<" "<< CPP[i].m_scores <<" "<< CPP[i].cal << endl;
	}
	ofs.close();
	cout << "删除成功!" << endl;
	system("pause");
	system("cls");
}

刚开始学习C++,错误之处请指正。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值