我无法将指针恢复为零,因此我可以在回声后再次检查数据。
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
ifstream infile;
infile.open ("scores.txt" , ifstream::in);
int ch = infile.get();
string lastname;
char gender= ' ';
string collegetype;
float score=0;
float scoreMALE=0;
float scoreFEMALE=0;
int countMALE=0;
int countFEMALE=0;
while ( !infile.eof())
{
cout << (char) ch;
ch = infile.get();
}
infile.seekg(0,ios::beg);
while ( !infile.eof())
{
infile>>lastname>>gender>>collegetype>>score;
if(gender == 'm')
{
scoreMALE = scoreMALE + score;
countMALE++;
}
else if (gender == 'f')
{
scoreFEMALE = score;
countFEMALE++;
}
}
cout<<"\n\n\n The total Female Scores is"<<countFEMALE<<"\n\n\n The total of the male scores is"<<countMALE; // Checking to see if file works
infile.close();
cout<<"Press <Enter> to Exit";
cin.ignore();
cin.get();
return 0;
}
这是输入文件:
Bailey M CC 68 Harrison F CC 71 Grant M UN 75 Peterson F UN 69 许M联合国79 Bowles M CC 75 安德森F联合国64 Nguyen F CC 68 夏普F CC 75 Jones M UN 75 McMillan F UN 80 Gabriel F UN 62
答案 0 :(得分:0)
在infile.seekg(0,ios :: beg)上面添加infile.clear()会导致代码在这里迭代第二个循环(建议为Kerreck-SB)。
这样做之后你的分数仍为0的原因是由于使用的字符比较是不正确的情况。例如。输入文件中的'f'和'm'代替'F'和'M'。