qq_38423382
2017-06-03 02:08
采纳率: 97.3%
浏览 3.3k
已采纳

为什么我的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条回答 默认 最新

  • go__C 2017-06-03 03:02
    已采纳

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

    打赏 评论
  • 战在春秋 2017-06-03 02:30
     for (int i = 0; i < b; i++)
            cout << (char)cnm[i];  //前面不是cn吗,这里是cnm
    

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

    打赏 评论
  • baij1230 2017-06-03 03:11

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

    打赏 评论
  • Gikor 2017-06-03 03:18

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

    打赏 评论
  • zhadaobuzhinaliqule 2017-06-03 03:30

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

    打赏 评论

相关推荐 更多相似问题