好吧所以我正在尝试做一个霍夫曼编码/解码项目atm。我有所有的压缩工作,并试图将bitstring作为一个字节放在输出文件上。所以我做了一个示例代码,用一个小例子进行测试,看看它是如何工作的。使用下面的代码,我可以正确输出前8位(“11100011”),但第二次我得到16位(“110001010101010”)。有人会暗示我哪里出错了吗?非常感谢你提前。
鉴于:string bitstring =“11100011110001010101010”; unsigned char byte = 0;
for (int i = 0; i < bitstring.length(); i += 8){
string stringof8 = "";
if (i + 8 < bitstring.length()){
stringof8 = bitstring.substr(i, 8);
cout << stringof8 << endl;
}
else{
stringof8 = bitstring.substr(i);
cout << stringof8 << endl;
}
}
system("pause");
我也在使用visual studio。
*编辑:已修复
答案 0 :(得分:0)
检查substr参数的定义。是第二个参数位置还是长度?