C++大作业因为一个关键性问题无法完成,希望热心大神能够解答QAQ

例如以下这串代码,如果类中没有string成员即可顺利运行,可是一加上string就会显示“已停止工作”。曾经把主函数的内容分成两个函数(一个写一个读)然而读出来 是乱码。(写读在一个函数里时就会停止工作)。问题比较基础,但我是新手求老司机带飞QAQ
#include<iostream>
#include<string>
#include<fstream>
#include<vector>
using namespace std;

class teacher{
public:
teacher(){i=1;l="哈哈哈";
}
teacher(int j,string t){i=j;l=t;
}
int i;string l;
void print(){cout<<i<<l;
}
};

int main(){
int i;cin>>i;string t;cin>>t;
teacher n(i,t);
ofstream data2("中.dat",ios_base::out|ios_base::binary);
data2.write(reinterpret_cast<char*>(&n),sizeof(n));
data2.close() ;teacher v;
ifstream data1("中.dat",ios_base::in|ios_base::binary);
data1.read(reinterpret_cast<char*>(&v),sizeof(v)) ;
data1.close() ;v.print() ;
return 0;
}
附图一张
问题的关键不是解决这个小程序的运行,这个程序的类似版本是要几百行里运行的,希望可以解决根本性问题就是能让它确实写到磁盘文件并能从文件中正常的读出来。。。因为是新手没有多少币,我会努力回答问题把所有币都追加上的。(早知道暑假就留在学校了QAQ)

string t;cin>>t;//这里问题,cin传入的是char,string是类结构,应该用char*

追问

如果我的程序不涉及文件处理的话是可以正常运行的,C++里应该允许cin对string类的传入(事实上它是完成我的指令后出问题的)。

追答

我帮你调试下,开个电脑

追问

多谢QAQ

追答

已调试,确认是文件名问题,把中.dat改成英文就好了

追问

难道是电脑问题。。。

追答

在最后添加暂停语句,名字改英文,不用调试运行就不会出问题

追问

。。算了,没有解决整个大程序的问题(文件的问题),这个毕竟只是测试程序,ddl到了,今天要没人解决就把币全给你了,谢谢您的热心解答:)

追答

我尝试用mingw 跟vs编译,分别运行也是没问题的呢,在linux下用gcc编译也是没问题。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-07-02
你对class的逻辑概念理解有误。把基础打好吧。voidStudent::get_inf(){cout>t[i].name;//应该存储到类成员name,例如cin>>name
相似回答