C++ string存入二进制文件问题

我正在做学校的数据结构作业,用哈夫曼编码压缩文件(用C++编的)。我已经用String型存好了编码,比如String的"0010010",想把它以二进制位的形式存入二进制文件,但是直接用Write函数以二进制格式写入之后,貌似得到的不是二进制的,打开后是"0010010",不是二进制应有的乱码,而且当数据大的时候,“二进制”文件不但没压缩,还是原文件的好几倍。纠结了…求help QQ:334596595

第1个回答  2011-12-03
#include "fstream.h"

void savestr(char*f,char*s,int i)
{
fstream mf(f,ios::out);
mf.write(s,i);
mf.close();
}
void main()
{
char a[5] = {(char)0xff,(char)0x34,(char)0x32,(char)0x45,(char)0x67};
savestr("a.txt",a,5);
}
是这样吗?
fwrite函数和fstream::write都可以把数据按照它在内存中的样子原样写到硬盘中呢。
第2个回答  2011-12-03
当然了,因为String存的不是二进制,最好用SHORT数组追问

还有一点不明白,string,char存入的是ANSI码 int ,long ,short等存入的是无符号数,存入二进制文件时后三者存入的和前两者存入的分别是什么?

追答

当然了,STRING是存ANSI的字符,不是01,而是字符的ANSI码的值
INT 0-65535 可以转二进制或者8 16进制
long 同INT但是长度长
short 同 INT
unsigned short 0-65535的整数
一般用其数组存储

第3个回答  2011-12-03
调fwrite函数就是写入的二进制数据,读取对应fread函数。
第4个回答  2011-12-04
文件读、写方式不是以二进制形式操作的。
百度:c++ 文件操作
相似回答