C++实现读取CSV文件数据将进行计算。

C++实现读取CSV文件数据将进行计算。

文件和流

文件概述

文件是信息的集合,通常是指记录在外部存储介质(如磁盘等)上的信息集合。 文件在程序中为输入设备输出设备承担着缓冲的功能,一般程序中,文件在程序的作用如图所示。

文件流类

在C++中有一个stream类,所有的输入/输出(I/O)都是以这个“流”类为基础的,类stream有两个重要的运算符。

  • 流输出运算符(<<):向流输出数据。
  • 流输入运算符(>>):向流输入数据。

文件流是I/O中是非常重要的一个内容,它的输入是指从磁盘文件流向内存,输出是指内存流向磁盘。C++中提供了三个文件流类:ofstreamifstreamfstream,其中sftream是ofstream和ifstream多重继承的子类1。文件流类的关系如图所示。

案例

自定义CSV文件,内容有No、Chinese、English、Math,总共50条数据,前22条数据如图所示。
实现功能:

  1. 统计各科目平均分并显示;
  2. 按三门成绩总分排名并显示编号、总分;
  3. 筛选有不及格科目的编号记录,并将该行记录写入2.CSV
    在这里插入图片描述

读取CSV文件,使用ifstream输入流类中infile读取文件数据。

	ifstream infile("D:/CProject/1.csv", ios::in);
	string line;
	vector<struct Studet> studentVector;
	getline(infile, line);
	while (getline(infile, line)) {
   
		stringstream ss(line);
		string str;
		Studet studet;

		getline(ss, str, ',');
		studet.id = stod(str);
		getline(ss, str, ',');
		studet.chinese = stold(str);
		getline(ss, str, ',');
		studet.english = stold(str);
		getline(ss, str, ',');
		studet.math = stold(str);

		studentVector.push_back(studet);
	}

统计各科目平均分并显示,遍历student结构体的数据大小,获取Chinese、English、Math总数的和并计算平均数。

	chineseAvg = chineseSum / studentVector.size();
	englishAvg = englishSum / studentVector.size();
	mathAvg = chineseSum / studentVector.size();

	cout << "统计各科目平均分并显示:" << endl;
	cout << "语文平均分:" << chineseAvg << "\n英语平均分:" << englishAvg << "\n数学平均分:" << mathAvg << endl;
	cout << endl;

根据Chinese、English、Math三门成绩总分排名并显示编号、总分。

	int temp
  • 7
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值