永发信息网

c++ string类二进制文件怎么读

答案:4  悬赏:70  手机版
解决时间 2021-03-14 13:19
这个代码究竟错在哪,怎么改,一定要用string类
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main()
{
string a,b;
cin>>a;
ofstream ofile;
ofile.open("d:\\1.dat");
ofile.write((char*)&a,sizeof(a));
ofile.close();
ifstream ifile;
ifile.open("d:\\1.dat");
ifile.read((char*)&b,sizeof(b));
ifile.close();
cout<<b<<endl;
}
最佳答案
ofile.write((char*)&a,sizeof(a)); 改成
ofile.write((char*) a.c_str(), a.length()); 或者
ofile << a;

ifile.read((char*)&b,sizeof(b)); 改成
ifile >> b;

试试,你要理解 read write函数的意思,不要乱写代码
全部回答
ios::binary 不要用STRING
你保存的时候应该这样保存: int main() { string str1; string str2; cin &gt;&gt; str1; cin &gt;&gt; str2; ofstream outfile(&quot;temp.dat&quot;,ios::binary); if(! outfile) { cerr &lt;&lt; &quot;error ! &quot; &lt;&lt;endl; return 0; } outfile.write(str1.c_str(),str1.size()+1); outfile.write(str2.c_str(),str2.size()+1); outfile.close(); return 1; } 读取的时候这样读取: int main() { string str1; str1.reserve(100); ifstream infile(&quot;temp.dat&quot;,ios::binary); if (! infile) { cerr &lt;&lt; &quot;error ! &quot; &lt;&lt;endl; return 0; } infile.read((char * )str1.c_str(),100); cout &lt;&lt;str1 &lt;&lt;endl; //输出第一个字符串 cout &lt;&lt; (char*)(str1.c_str() + strlen(str1.c_str())+1) &lt;&lt; endl;//输出第二个字符串 return 1; } 至于原来你写的程序能够正常工作,是因为你往文件里写的是string类,包含了字符串指针,而同一个进程里面指针是不会变的,所以你读出来之后ok。 当你把“保存”的那一段代码删掉后,你再编译运行这个程序,这时str1/str2分配的指针与你上次写在文件里的指针不同了,所以显示出的字符串是乱码。 我改的程序c语言风格有点重,呵呵,你可以自己看着再改改。
你那个a前面加&符号干嘛啊?还有b前面的&符号!a和b本身就是一个string类的对象,取地址的时候不要加&取址符号!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
君子兰开花时候在叶子里夹着花茎没有.怎么回
上海歌城吴中路店,坐地铁几号线?公交也可以
某商场为了解服务质量,随机调查到该商场购物
潜水泵套哪个定额
函数y=(2x-1)/(x+1)的值域为
楚雄兴盛建设公司地址在什么地方,想过去办事
求解答l详细解释
我以前和师母关系很好。昨天师傅和师母吵架要
行知艺术空间地址有知道的么?有点事想过去
松下传真机fl328cn出现呼叫维修3怎么回事
捷豹xf2.0t 和xf3.0sc 外观一样吗
我有一个骚扰电话总是不间断的拨打我该怎么办
为什么速卖通上卖几美元的东西还包邮
压岁钱怎么花的调查报告 600~1500字
坪洞村民委员会地址有知道的么?有点事想过去
推荐资讯
好又多超市瓜埠店这个地址在什么地方,我要处
有哪些大型的做汽车内外饰(高分子材料类)的
城堡争霸了一个人不停打我怎么办?求解?
里屋我想知道这个在什么地方
谁有古风歌手慕寒的yy录音啊,从没听过歌会的
QQ游戏游戏币去哪买,我怎么找不到啊
求图片:玛莎百货logou
同人小说,主角遇到成仙的虚竹
霸王山我想知道这个在什么地方
听别人说问道有罕见的电精带舍命一击。。。当
进口奶粉在国内批发需要办理什么资质
嗨! 如果要使用NFC 功能 如刷公交 就必须更
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?