vc中如何保存double型数据为文件,并读取它?

我现在只能是把double型的数据转化成CString型的,然后存在stdiofile中,但是这样生成出来的文件是可以用记事本直接打开看到里面的数字的。我希望能保存成文件... 我现在只能是把double型的数据转化成CString型的,然后存在stdiofile中,但是这样生成出来的文件是可以用记事本直接打开看到里面的数字的。

我希望能保存成文件,用记事本打开时只看到乱码(是二进制文件?),用我的程序读取能读出数据的。

请各位大侠不吝赐教,希望能给一段【实例代码】,先谢谢啦。
展开
 我来答
srhouyu
2006-11-26 · TA获得超过2407个赞
知道大有可为答主
回答量:1198
采纳率:37%
帮助的人:945万
展开全部
只需要把double型转CString的时候使用你独特的转换方法就可以了。例如转换成普通的CString字符串以后,使用替换字符的方法把字符串每个字符偷换掉。只有你自己知道偷换的方法,所以读取以后使用相反的方法就可以解决。

例一:
str里面是字符串“6.5412547896”,你把每个字符的ASCII码都减去100再保存,这样每个字符的ASCII码都将是负数,位于后128个,用记事本打开当然就是乱码了。读取时候,把每个字符加上100就还原成了“6.5412547896”

例二:
你随便选择一个8位数,例如0x29,让它与str的每个字符异或,这样字符串看起来就面目全非了。还原的时候,再使用0x29异或一次,就得到了原来的字符串。只要别人不知道你选的是0x29,他就没法知道你的数字是多少。
wangtk1982
2006-11-26 · TA获得超过3742个赞
知道大有可为答主
回答量:3206
采纳率:100%
帮助的人:1455万
展开全部
一个简单的办法,建立一个sizeof(double)长度的byte数组
然后把double,memcpy到这个数组;然后写入这个数组;
读取的时候也是先读入数组,然后memcpy送回到double变量里就行了!也可以只用4位,写入低4位
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jeff8888
推荐于2016-02-14 · TA获得超过2.2万个赞
知道大有可为答主
回答量:1158
采纳率:100%
帮助的人:2135万
展开全部
BOOL SaveDoubleValueToFile(double dValue, char* strFileName)
{
FILE* fp = fopen(strFileName, "wb");//用二进制方式打开文件

if(fp == NULL)
return FALSE;

fwrite(&dValue, sizeof(double), 1, fp);//将数值直接写入文件

fclose(fp);

return TRUE;
}

BOOL ReadDoubleValueFromFile(double &dValue, char* strFileName)
{
FILE* fp = fopen(strFileName, "rb");//用二进制方式打开文件

if(fp == NULL)
return FALSE;

fread(&dValue, sizeof(double), 1, fp);//从文件直接读取数值

fclose(fp);

return TRUE;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
昔所亘1792
2006-11-27 · TA获得超过203个赞
知道答主
回答量:74
采纳率:0%
帮助的人:72.7万
展开全部
使用carchive类,
double a;
CFile file("d://...,"CFile::modeCreate|CFile::modeWrite);
CArchive ar(file,CArchive::store);
ar<<a;
这样就二进制存储了,而且读取的时候也很简单
double a;
CFile file("d://...",CFile::modeRead);
carchive ar(file,CArchive::load);
ar>>a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式