我写了霍夫曼算法,它构建了树。 在字符串中有1和0的序列之后。 如何将它们按位进入文件?在互联网上,我找到了代码:
ofstream fout("out.txt", ios::out | ios::binary);
for each(char s in bnr)
{
buf = buf | s << (7 - count);
count++;
if (count == 8)
{
count = 0;
fout << buf;
cout << buf;
buf = 0;
}
}
因此,例如,我有字符串&#34; ab&#34;,使用算法我得到字符串&#34; 01&#34;,下面的代码不会在out.txt中放任何东西,即问题。 请描述此任务的位操作,或描述将位写入文件的不同方法。
我试图不使用STL,因为我的老师禁止使用STL。
答案 0 :(得分:1)
假设字符串由ascii字符'0'和'1'组成,那么您需要对示例代码稍作更改。这个例子有大部分逻辑。
unsigned char buf = 0;
int count = 0;
int i = 0;
while(s[i] != '\0')
{
buf = buf | ((s[i++]-'0') << (7 - count));
count++;
if (count == 8)
{
count = 0;
fout << buf;
buf = 0;
}
}
if(count != 0)
fout << buf;