C++ fstream流读取的问题
代码(省略头文件等):
fs.open("d:\\mmmmmm.mm",ios::out|ios::binary|ios::app);
string a = "其实这不是我想说的话你难道不知道么";
string aa = "今天我从一个把豆花煮成豆腐的老几子那里买了一个豆腐";
fs.write((char *)(&a),sizeof(string));
fs.write((char *)(&aa),sizeof(string));
fs.close();
int i = 0;
int max = 0;
fs.open("d:\\mmmmmm.mm",ios::in|ios::binary);
fs.seekg(0,ios::beg);
fs.seekg(0,ios::end);
max = fs.tellg();
fs.seekg(0,ios::beg);
string s = "";
while(i < max)
{
fs.read((char *)(&s),sizeof(string));
fs.seekg(0,i);
cout<<s<<endl;
i += sizeof(string);
}
fs.close();
这一段代码第一次执行是不会出问题的,但第二次再执行就报错。
但如果把string类型换成int或者double类型,就不会有问题了。
请高手帮忙解读下为什么。