求助大佬,我的c++程序读文件是总是出错,读不出来

从文件读取信息然后保存到对象数组中,就是读不出来,代码如下:

#include <iostream>
#include<stdlib.h>
#include <string>
#include <sstream>
#include<fstream>
#include<vector>
#define MAXSIZE 100
#define MINSIZE 50
#define RADIX 10
using namespace std;
int y = 0;
class Student{
public:
    string name;
    int num;
    int chinese;
    int math;
    int english;
    int add;
    void print();
};
void Student::print()
{
    cout<<name<<"  "<<num<<"  "<<chinese<<"  "<<math<<"  "<<english<<"  "<<add<<endl;
}
int GetNumInPos(int num, int pos)
{
    int temp = 1;
    for (int i = 0; i < pos - 1; i++)
        temp *= 10;

    return (num / temp) % 10;
}

void lsd(vector<int> &A)
{
    int len = A.size();
    vector< vector<int> > radixArray(10);  //分为0~9的序列空间

    for (int pos = 1; pos <= RADIX; pos++)    //从个位开始到最高位数
    {
        for (int i = 0; i < len; i++)    //分配过程
        {
            int num = GetNumInPos(A[i], pos);
            radixArray[num].push_back(A[i]);
        }

        for (int i = 0, j = 0; i < 10; i++)    //收集
        {
            while (!radixArray[i].empty())
            {
                A[j++] = radixArray[i].front();  //取首部数据依次插入原数组
                radixArray[i].erase(radixArray[i].begin());    //移除首部元素
            }
        }
    }
}

vector<string> split(string a,string b)
{
   vector<string> x;
   a += b;
   int length = a.length();
   int pos = a.find(b);
   while (pos != (-1)) {
       string x = a.substr(0,pos);
       a = a.substr(pos+1,length);
       pos = a.find(b);
   }
   return x;
}

void menu()
{
    cout<<"        "<<"1.从文件读入数据"<<endl;        //菜单
    cout<<"        "<<"2.LSD排序"<<endl;
    cout<<"        "<<"3.MSD排序"<<endl;
    cout<<"        "<<"4.结束程序"<<endl;
}
int main()
{
    Student data[MAXSIZE],data1[MAXSIZE],data2[MAXSIZE],data3[MAXSIZE],data4[MAXSIZE],data5[MAXSIZE];
    int x,i,j;
    string str;
    ifstream  in;
    ofstream out;
    while(1)
    {
        menu();
        cin>>x;
        switch(x)
        {
           case 1:
              in.open("old.txt",ios::in);
              if(!in)
              {
                  cout<<"文件打开失败"<<endl;
              }
              i=0;
              while(in>>data[i].name
                    >>data[i].num
                    >>data[i].chinese
                    >>data[i].math
                    >>data[i].english
                    >>data[i].add)
              {
                  y++;
                  i++;
              }
              cout<<y<<endl;;
              break;
           case 2:
              cout<<"排序前顺序为:"<<endl;
              cout<<"姓名    学号    语文    数学    英语    总分"<<endl;
              for(i=0;i<y;i++)
              {
                  data[i].print();
              }
              vector<int> v1,v2,v3,v4,v5;
              for(i=0;i<y;i++)
              {
                  v1.push_back(data[i].num);
                  v2.push_back(data[i].chinese);
                  v3.push_back(data[i].math);
                  v4.push_back(data[i].english);
                  v5.push_back(data[i].add);

              }
              lsd(v1);
              lsd(v2);
              lsd(v3);
              lsd(v4);
              lsd(v5);
              for(i=0;i<y;i++)
              {
                  for(j=0;j<y;j++)
                  {
                      if(data[j].num==v1[i])
                      {
                          data1[i]=data[j];
                      }
                      if(data[j].chinese==v2[i])
                      {
                          data2[i]=data[j];
                      }
                      if(data[j].math==v3[i])
                      {
                          data3[i]=data[j];
                      }
                      if(data[j].english==v4[i])
                      {
                          data4[i]=data[j];
                      }
                      if(data[j].add==v5[i])
                      {
                          data5[i]=data[j];
                      }
                  }
              }
              cout<<"LSD排序结果:"<<endl;
              cout<<"按照学号排序:"<<endl;
              for(i=0;i<y;i++)
                  data1[i].print();
              cout<<"按照语文成绩排序:"<<endl;
              for(i=0;i<y;i++)
                  data2[i].print();
              cout<<"按照数学成绩排序:"<<endl;
              for(i=0;i<y;i++)
                  data3[i].print();
              cout<<"按照英语成绩排序:"<<endl;
              for(i=0;i<y;i++)
                  data4[i].print();
              cout<<"按照总成绩排序:"<<endl;
              for(i=0;i<y;i++)
                  data5[i].print();
              break;
        }
    }
    return 0;
}

运行结果:

 要读的文件:

你能否写一个最简单的程序,只读文件内容的, 然后看看这个程序是否能把刚读的内容打印出来?   例如,在下面的代码中加一些打印

 

 while(in>>data[i].name
                    >>data[i].num
                    >>data[i].chinese
                    >>data[i].math
                    >>data[i].english
                    >>data[i].add)
              {
                  y++;
                  i++;

                  //把 data[i]  的内容打印出来
              }

#include <iostream>
#include <string>
#include<fstream>
using namespace std;
class Student{
public:
    string name;
    int num;
    int chinese;
    int math;
    int english;
    int add;
    void print();
};
int y=0;
void Student::print()
{
    cout<<name<<"  "<<num<<"  "<<chinese<<"  "<<math<<"  "<<english<<"  "<<add<<endl;
}
int main()
{
    Student data[10];
    ifstream  in;
    in.open("1.txt",ios::in);
    if(!in)
    {
        cout<<"文件打开失败"<<endl;
    }
    int i=0;
    while(in>>data[i].name
        >>data[i].num
        >>data[i].chinese
        >>data[i].math
        >>data[i].english
        >>data[i].add)
    {
        y++;
        i++;
        data[i].print();
        //把 data[i]  的内容打印出来
    }
}

还是不行啊

 

已经解决,谢谢了