c++文件流的输入与输出错误

请问这是为什么啊?
图片图片

抱歉手机截图,不清楚,代码如下,麻烦了
#include
#include
#include
using namespace std;
struct student
{

string name;
int num;
};
void creat()
{

fstream outfile("C:\stu.dat",ios::out);
student stu[2];
cout<<"输入学生数据:"< for(int i=0;i { cin>>stu[i].name>>stu[i].num; outfile.write((char*)&stu[i],sizeof(stu[i]));
}

outfile.close();
}
void show()
{

fstream infile("C:\stu.dat",ios::in);

student s[2];

cout<<"学生数据如下:"<<endl;
for(int i=0;i<2;i++)

{

infile.read((char*)&s[i],sizeof(s[i])); cout<<s[i].name<<" "<<s[i].num<<endl;

}

infile.close();
}
void main()
{ creat();

show();
}

fstream outfile("C:\stu.dat",ios::out)中文件路径应该为C:\stu.dat,另外这不是以二进制方式打开的文件,但你在写入和读取文件的时候read和write是以二进制方式进行的。

问题在string这个类型,不适合做持久化,或者说你需要进一步的调研如何使用它,替换为char*就可以了。
我在g++下运行一下程序没有问题:

try

 struct student
{
    char name[256];
    int num;
};
 #include <iostream>
#include <fstream>
using namespace std;

struct student
{
        char name[256];
        int num;
};

void creat()
{

fstream outfile("stu.dat",ios::out);
student stu[2];
cout<<"输入学生数据:"<<endl;
for(int i=0;i<2;i++)
{
        cin>>stu[i].name>>stu[i].num;
        outfile.write((char*)&stu[i],sizeof(stu[i]));
}

outfile.close();
}
void show()
{
        fstream infile("stu.dat",ios::in);

        student s[2];
        cout<<"学生数据如下:"<<endl;
        for(int i=0;i<2;i++)
        {
                infile.read((char*)&s[i],sizeof(s[i]));
                cout<<s[i].name<<" "<<s[i].num<<endl;
        }

        infile.close();
}

int main()
{
        creat();
        show();
        return 0;