9.完成编程练习6,但从文件中读取所需的信息。该文件的第一项应为捐款人数,余下的内容应为成对的行。在每一对中,第一行为捐款人姓名,第二行为捐款数额。即该文件类似于下面:
4
Sam Stone
2000
Freida Flass
100500
Tammy Tubbs
5000
Rich Raptor
55000
#pragma region 第五章练习9
#if 1
#include<iostream>
#include<fstream>
#include <cstdlib>
#include<string>
using namespace std;
struct people
{
string name;
unsigned rmb;
};
int main() {
ifstream inFile("carinfo.txt");
unsigned uNumPeo;
int cntPeop = 0;
inFile >> uNumPeo;
unsigned peoplea = 0, peopleb = 0;
people* peop = new people[uNumPeo];
for (size_t i = 0; i < uNumPeo; i++)
{
//inFile >> peop[cntPeop].name;//名字中间不能有空格,这里处理不了
//inFile >> peop[cntPeop].rmb;
inFile.get();
getline(inFile, peop[cntPeop].name);
inFile >> peop[cntPeop].rmb;
++cntPeop;
}
cout << "重要捐赠者:" << endl;
for (unsigned i = 0; i < uNumPeo; i++)
{
if (peop[i].rmb >= 10000)
{
cout << peop[i].name << endl;
peoplea = 1;
}
}
if (!peoplea)
{
cout << "NONE" << endl;
}
cout << "普通捐赠者:" << endl;
for (unsigned i = 0; i < uNumPeo; i++)
{
if (peop[i].rmb < 10000)
{
cout << peop[i].name << endl;
peopleb = 1;
}
}
if (!peopleb)
{
cout << "NONE" << endl;
}
delete[] peop;
return 0;
}
#endif
#pragma endregion
注意事项:
1,相比题目6,这里做了如下改动
2,没有打印捐赠者的捐款金额。
3,对文件的操作,没有做操作的判断
4,对于文件的读取和cout屏幕的输出类似,也要做换行的处理和清除