爱问知识人 爱问教育 医院库

c 编程问题:string类怎么保存到二进制文件?

首页

c++编程问题:string类怎么保存到二进制文件?

#include <iostream> 
#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能保存到文件,而且能够成功读取并显示。 

但如果我把“保存”的那一段代码删掉,读取就会失败,显示乱码。怎么回事?怎么解决?(不要复制一大堆东西过来,谢谢。)

提交回答
好评回答
  • 2006-10-12 02:16:04
    outfile.write((char * )&str1,sizeof(string)); 
    改成
    outfile.write(str1.c_str(), ze()); 
    string不是char*的代名词......
     ad((char * )&str1,sizeof(string)); 也要改
    先读到char[],然后传给string

    y***

    2006-10-12 02:16:04

其他答案

    2006-10-11 12:21:13
  • 没有保存却要读出来,不产生错误还会是什么?
    而且这类的操作应该通过类的序列化完成,而不是这么直接写到文件中。

    p***

    2006-10-11 12:21:13

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 171-190
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):