vc中如何保存double型数据为文件,并读取它?
我现在只能是把double型的数据转化成CString型的,然后存在stdiofile中,但是这样生成出来的文件是可以用记事本直接打开看到里面的数字的。我希望能保存成文件...
我现在只能是把double型的数据转化成CString型的,然后存在stdiofile中,但是这样生成出来的文件是可以用记事本直接打开看到里面的数字的。
我希望能保存成文件,用记事本打开时只看到乱码(是二进制文件?),用我的程序读取能读出数据的。
请各位大侠不吝赐教,希望能给一段【实例代码】,先谢谢啦。 展开
我希望能保存成文件,用记事本打开时只看到乱码(是二进制文件?),用我的程序读取能读出数据的。
请各位大侠不吝赐教,希望能给一段【实例代码】,先谢谢啦。 展开
4个回答
展开全部
只需要把double型转CString的时候使用你独特的转换方法就可以了。例如转换成普通的CString字符串以后,使用替换字符的方法把字符串每个字符偷换掉。只有你自己知道偷换的方法,所以读取以后使用相反的方法就可以解决。
例一:
str里面是字符串“6.5412547896”,你把每个字符的ASCII码都减去100再保存,这样每个字符的ASCII码都将是负数,位于后128个,用记事本打开当然就是乱码了。读取时候,把每个字符加上100就还原成了“6.5412547896”
例二:
你随便选择一个8位数,例如0x29,让它与str的每个字符异或,这样字符串看起来就面目全非了。还原的时候,再使用0x29异或一次,就得到了原来的字符串。只要别人不知道你选的是0x29,他就没法知道你的数字是多少。
例一:
str里面是字符串“6.5412547896”,你把每个字符的ASCII码都减去100再保存,这样每个字符的ASCII码都将是负数,位于后128个,用记事本打开当然就是乱码了。读取时候,把每个字符加上100就还原成了“6.5412547896”
例二:
你随便选择一个8位数,例如0x29,让它与str的每个字符异或,这样字符串看起来就面目全非了。还原的时候,再使用0x29异或一次,就得到了原来的字符串。只要别人不知道你选的是0x29,他就没法知道你的数字是多少。
展开全部
一个简单的办法,建立一个sizeof(double)长度的byte数组
然后把double,memcpy到这个数组;然后写入这个数组;
读取的时候也是先读入数组,然后memcpy送回到double变量里就行了!也可以只用4位,写入低4位
然后把double,memcpy到这个数组;然后写入这个数组;
读取的时候也是先读入数组,然后memcpy送回到double变量里就行了!也可以只用4位,写入低4位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
{
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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用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;
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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询