资源简介

用C++类读取TXT文件数据,一行一个条数据,每条数据有3个不同数据字段,容器是用vector,字符串类型用string,指针的处理都是用封装的处理,C++就是强大

资源截图

代码片段和文件信息

// classprog-readtxtforclass.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“

#include  // 字符串类string头文件
#include  // 容器类vector头文件
#include  // TXT文件流访问类
#include 
using namespace std;

class School {
private:
int m_id;
string m_name;
float m_cost;
public:
School(int id string name float cost) {
m_id = id;
m_name = name;
m_cost = cost;
}

int getid(void) { return m_id; }
string getname(void) { return m_name; }
float getcost(void) { return m_cost; }

void putid(int id) { m_id = id; }
void putname(string name) { m_name = name; }
void putcost(float cost) { m_cost = cost; }
};

class Maxschool {
private:
vector m_arrSchools;

public:

Maxschool(string strFileTxtPath) {

ifstream txtfile(strFileTxtPath);
string line;

m_arrSchools.clear();
if (txtfile) // 有该文件  
{
while (getline(txtfile line)) // line中不包括每行的换行符  
{
//cout << line << endl;
int id = -1;
string name = ““;
float cost = 0.0;
string::size_type idx1 = -1 idx2 = -1;
//每行数据的三个字段由两个空格分开,定位空格的位置
for (string::size_type i = 0; i < line.length(); i++)
{
if (line[i] == ‘ ‘) (idx1 + 1)? idx2 = i:idx1 = i;
}
//如果该行数据完整,idx2不为-1否则该School实例id为-1
if (idx2 + 1)
{
id = stoi(line.substr(0 idx1 + 1) nullptr 0);
name = line.substr(idx1 idx2 - idx1);
cost = stof(line.substr(idx2)0);
}
//
School tempSchool(idnamecost);
m_arrSchools.push_back(tempSchool);
}
}
else // 没有该文件  
{
cout << “no such file“ << endl;
}
}

School GetMaxCostSchool() //暂不考虑并列,只取第一个最高
{
float fTempCost = 0.0;
School MaxSchool(-1““0.0);

for (vector::size_type idx = 0; idx != m_arrSchools.size(); idx++) {
if (fTempCost < m_arrSchools[idx].getcost())
{
fTempCost = m_arrSchools[idx].getcost();
MaxSchool.putid(m_arrSchools[idx].getid());
MaxSchool.putname(m_arrSchools[idx].getname());
MaxSchool.putcost(m_arrSchools[idx].getcost());
}
}

return MaxSchool;
}
};

int main()
{
Maxschool MaxSchooslnfo(“schoolsinfo.txt“);
School MaxCostSchool = MaxSchooslnfo.GetMaxCostSchool();
if (MaxCostSchool.getid() + 1)
{
cout << “find MaxCostSchool:“ << MaxCostSchool.getid() << endl;
cout << “id:“ << MaxCostSchool.getid() << endl;
cout << “name:“ << MaxCostSchool.getname() << endl;
cout << “cost:“ << MaxCostSchool.getcost() << endl;
}
else
{
cout << “no MaxCostSchool“ << endl;
}
getchar();
    return 0;
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     33792  2018-04-23 14:25  classprog-readtxtforclass\.vs\classprog-readtxtforclass\v14\.suo

     文件       2713  2018-04-23 14:18  classprog-readtxtforclass\classprog-readtxtforclass\classprog-readtxtforclass.cpp

     文件       8071  2018-04-23 11:15  classprog-readtxtforclass\classprog-readtxtforclass\classprog-readtxtforclass.vcxproj

     文件       1332  2018-04-23 11:15  classprog-readtxtforclass\classprog-readtxtforclass\classprog-readtxtforclass.vcxproj.filters

     文件          3  2018-04-23 14:22  classprog-readtxtforclass\classprog-readtxtforclass\Debug\classprog-readtxtforclass.log

     文件       1636  2018-04-23 11:15  classprog-readtxtforclass\classprog-readtxtforclass\ReadMe.txt

     文件        105  2018-04-23 14:12  classprog-readtxtforclass\classprog-readtxtforclass\schoolsinfo.txt

     文件        229  2018-04-23 11:15  classprog-readtxtforclass\classprog-readtxtforclass\stdafx.cpp

     文件        234  2018-04-23 11:15  classprog-readtxtforclass\classprog-readtxtforclass\stdafx.h

     文件        240  2018-04-23 11:15  classprog-readtxtforclass\classprog-readtxtforclass\targetver.h

     文件       1357  2018-04-23 11:15  classprog-readtxtforclass\classprog-readtxtforclass.sln

     目录          0  2018-04-23 11:15  classprog-readtxtforclass\.vs\classprog-readtxtforclass\v14

     目录          0  2018-04-23 14:22  classprog-readtxtforclass\classprog-readtxtforclass\Debug\classpro.ED5ED8E2.tlog

     目录          0  2018-04-23 11:15  classprog-readtxtforclass\.vs\classprog-readtxtforclass

     目录          0  2018-04-23 14:22  classprog-readtxtforclass\classprog-readtxtforclass\Debug

    ...D.H.         0  2018-04-23 11:15  classprog-readtxtforclass\.vs

     目录          0  2018-04-23 14:18  classprog-readtxtforclass\classprog-readtxtforclass

     目录          0  2018-04-23 14:26  classprog-readtxtforclass

----------- ---------  ---------- -----  ----

                49712                    18


评论

共有 条评论