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

来源:百度知道 编辑:UC知道 时间:2024/06/05 06:10:25
我现在只能是把double型的数据转化成CString型的,然后存在stdiofile中,但是这样生成出来的文件是可以用记事本直接打开看到里面的数字的。

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

请各位大侠不吝赐教,希望能给一段【实例代码】,先谢谢啦。

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;
}

只需要把double型转CString的时候使用你独特的转换方法就可以了。例如转换成普通的CString字符串以后,使用替换字符的方法把字符串每个字符偷换掉。只有你自己知道偷换的方法,所以读取以后使用相反的方法就可以解决。

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

例二:
你随便选择一个8位数,例如0x29,让它与str的每个字符异或,这样字符串看起来就面目全非了。还原的时候,再使用0x29异或一次,就得到了原来的字符串。只要别人不知道你选的是