为什么我的string类型输出是乱码,而内存里面存着是正确的

部分代码如下
string cn;

ifstream infile("encode.lzw", ios::binary);
infile.read((char*)&stud, sizeof(stud));
for (int i = 0; i<8; i++)
{
cn += char((int)stud / 128);
*stud << 1;
}
infile.close();

for (int i = 0; i < b; i++)
        cout << (char)cnm[i];
        打错了不是cnm,是cn

5个回答

从文件读取的数据有可能是编码的问题,改变一下编码试试看

 for (int i = 0; i < b; i++)
        cout << (char)cnm[i];  //前面不是cn吗,这里是cnm

因为是部分代码,不确定是这个问题。
建议你检查下这块,看看输出和内存是否指向同一对象。

文件读取的话可能有BOM头的问题。

字符串后边不是以"\0"结尾的吧?输出的时候cn+=“\0”试试

字符串后面没有加‘\0’,加上结束符再输出

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐