分类：电脑/网络-程序设计-C/C++
问题：c++编程问题：string类怎么保存到二进制文件？#inclu 
#include <tream> #include <string> #include <fstream> using namespace std; int main() { string str1; string str2; cin >> str1; cin >> str2; ofstream outfile("temp.dat",ios::binary); if(! outfile) { cerr << "Error ! " <&l#include <tream> #include <string> #include <fstream> using namespace std; int main() { string str1; string str2; cin >> str1; cin >> str2; ofstream outfile("temp.dat",ios::binary); if(! outfile) { cerr << "Error ! " <<endl; return 0; } outfile.write((char * )&str1,sizeof(string)); outfile.write((char * )&str2,sizeof(string));  ose(); ifstream infile("temp.dat",ios::binary); if (! infile) { cerr << "Error ! " <<endl; return 0; }  ad((char * )&str1,sizeof(string));  ad((char * )&str2,sizeof(string)); cout <<str1 <<endl; cout <<str2 <<endl; return 1; } 如果我就这样执行的话，str1和str2能保存到文件，而且能够成功读取并显示。 但如果我把“保存”的那一段代码删掉，读取就会失败，显示乱码。怎么回事？怎么解决？（不要复制一大堆东西过来，谢谢。）
回答：outfile.write((char * )&str1,sizeof(string)); 
改成
outfile.write(str1.c_str(), ze()); 

string不是char*的代名词......

 ad((char * )&str1,sizeof(string)); 也要改
先读到char[],然后传给string