为什么我的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

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

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

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

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

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

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