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

来源:互联网 发布:平板电脑淘宝开店认证 编辑:程序博客网 时间:2024/06/08 02:59

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

数据:

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

//定义访问类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 << '\t' << grades[i].institute << '\t' << grades[i].majorid << '\t' << grades[i].major << '\t' << grades[i].ptgrade << '\t' << grades[i].rtgrade << '\t' << grades[i].tgrade << '\t' << grades[i].LearningMethod << '\t' << grades[i].AdmissionCategory << '\t' << endl;}}}elsecerr << "无法打开文件!" << 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 << '\t' << grades[i].institute << '\t' << grades[i].majorid << '\t' << grades[i].major << '\t' << grades[i].ptgrade << '\t' << grades[i].rtgrade << '\t' << grades[i].tgrade << '\t' << grades[i].LearningMethod << '\t' << grades[i].AdmissionCategory << '\t' << endl;}}}elsecerr << "无法打开文件!" << endl;    return 0;}


原创粉丝点击