c加加小问题 学生代码出错

#include
using namespace std;
struct student
{string name;
int num;
int age;
char sex;
};
int main()
{student stud[3];
int i;
ifstream infile("stud.dat",ios::binary);
if(!infile)
{cerr<<"open error!"<<endl;
abort();
}
for(i=0;i<3;i++)
infile.read((char*)&stud[i],sizeof(stud[i]));
infile.close();
for(i=0;i<3;i++)
{cout<<"NO."<<i+1<<endl;
cout<<"name:"<<stud[i].name<<endl;
cout<<"num:"<<stud[i].num<<endl;
cout<<"age:"<<stud[i].age<<endl;
cout<<"sex:"<<stud[i].sex<<endl;
}
return 0;
}

img

#include <iostream>
#include <fstream>

using namespace std;

供参考:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct student
{
    string name;
    int num;
    int age;
    char sex;
};
int main()
{
    student stud[3];
    int i;
    ifstream infile("stud.dat",ios::binary);
    if(!infile)
    {
        cerr<<"open error!"<<endl;
        abort();
    }
    for(i=0;i<3;i++)
        infile.read((char*)&stud[i],sizeof(stud[i]));
    infile.close();
    for(i=0;i<3;i++)
    {
        cout<<"NO."<<i+1<<endl;
        cout<<"name:"<<stud[i].name<<endl;
        cout<<"num:" <<stud[i].num<<endl;
        cout<<"age:" <<stud[i].age<<endl;
        cout<<"sex:" <<stud[i].sex<<endl;
    }
    return 0;
}

把代码使用代码片功能发出来,你是不是少包含了一个头文件?