无法将指针返回零

时间:2012-02-12 18:40:48

标签: c++

我无法将指针恢复为零,因此我可以在回声后再次检查数据。

#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

1 个答案:

答案 0 :(得分:0)

在infile.seekg(0,ios :: beg)上面添加infile.clear()会导致代码在这里迭代第二个循环(建议为Kerreck-SB)。

这样做之后你的分数仍为0的原因是由于使用的字符比较是不正确的情况。例如。输入文件中的'f'和'm'代替'F'和'M'。