牛骨文教育服务平台(让学习变的简单)
博文笔记

C++读取txt文件内容——每行按列存入数组

创建时间:2017-09-04 投稿人: 浏览次数:4124




考研筛选计算机考生的成绩,利用大三学习的数据挖掘课程的相应代码。

数据:

程序首先自定义一个存放每行数据元素的类:

//定义访问类
class Grade
{
public:
	char sname[50];					//学生姓名
	char sid[20];					//学生考号
	char institute[50];				//学院名称		
	int majorid;					//专业代码
	char major[20];					//专业名称
	float ptgrade;					//初试成绩
	float rtgrade;					//复试成绩
	float tgrade;					//总成绩
	char LearningMethod[20];		//学习方式
	char AdmissionCategory[20];		//录取类别
};

然后利用ifstream读取文件数据:每行每隔一个空格存入Grade[]数组的各项中。

//打开和创立文件:
	ifstream infile;
	infile.open("infile.txt", ios::in);
	/*string contents;*/
	if (infile.fail())
	{
		cout << "error open!" << endl;
	}
//读取文件:
	Grade grades[3500];
	int grade_size = 0;
	while (!infile.eof())
	{
		infile >> grades[grade_size].sname >> grades[grade_size].sid >> grades[grade_size].institute >> grades[grade_size].majorid >> grades[grade_size].major >> grades[grade_size].ptgrade >> grades[grade_size].rtgrade >> grades[grade_size].tgrade >> grades[grade_size].LearningMethod >> grades[grade_size].AdmissionCategory;
		grade_size++;
	}


最后将读取到的文件内容以自己想要的格式和数据(计算机考生)输出到另一txt文件中:

//保存文件:
	if (outfile)
	{
		for (int i = 0; i<grade_size; i++)
		{
			if(grades[i].majorid == 81200 || grades[i].majorid == 85211 || grades[i].majorid == 85212 || grades[i].majorid == 83500){
				outfile << grades[i].sname << "	" << grades[i].institute << "	" << grades[i].majorid << "	" << grades[i].major << "	" << grades[i].ptgrade << "	" << grades[i].rtgrade << "	" << grades[i].tgrade << "	" << grades[i].LearningMethod << "	" << grades[i].AdmissionCategory << "	" << endl;
			}
		}
	}
	else
		cerr << "无法打开文件!" << endl;

获得数据:



整体代码:

#include "stdafx.h"
#include<iostream>
#include<string>
#include<fstream>
#include<algorithm>
using namespace std;

//定义访问类
class Grade
{
public:
	char sname[50];					//学生姓名
	char sid[20];					//学生考号
	char institute[50];				//学院名称		
	int majorid;					//专业代码
	char major[20];					//专业名称
	float ptgrade;					//初试成绩
	float rtgrade;					//复试成绩
	float tgrade;					//总成绩
	char LearningMethod[20];		//学习方式
	char AdmissionCategory[20];		//录取类别
};
int main()
{
	//打开和创立文件:
	char name2[50];
	ifstream infile;
	infile.open("infile.txt", ios::in);
	/*string contents;*/
	if (infile.fail())
	{
		cout << "error open!" << endl;
	}
	cout << "输入要保存的文件名:" << endl;
	cin >> name2;
	ofstream outfile(name2, ios::out);
	if (!outfile)
	{
		cout << "open eror!" << endl;
		exit(1);
	}
	//读入文件:
	Grade grades[3500];
	int grade_size = 0;
	while (!infile.eof())
	{
		infile >> grades[grade_size].sname >> grades[grade_size].sid >> grades[grade_size].institute >> grades[grade_size].majorid >> grades[grade_size].major >> grades[grade_size].ptgrade >> grades[grade_size].rtgrade >> grades[grade_size].tgrade >> grades[grade_size].LearningMethod >> grades[grade_size].AdmissionCategory;
		grade_size++;
	}
	//保存文件:
	if (outfile)
	{
		for (int i = 0; i<grade_size; i++)
		{
			if(grades[i].majorid == 81200 || grades[i].majorid == 85211 || grades[i].majorid == 85212 || grades[i].majorid == 83500){
				outfile << grades[i].sname << "	" << grades[i].institute << "	" << grades[i].majorid << "	" << grades[i].major << "	" << grades[i].ptgrade << "	" << grades[i].rtgrade << "	" << grades[i].tgrade << "	" << grades[i].LearningMethod << "	" << grades[i].AdmissionCategory << "	" << endl;
			}
		}
	}
	else
		cerr << "无法打开文件!" << endl;
    return 0;
}


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。