qq_38423382
qq_38423382
采纳率97.3%
2017-06-03 02:08 阅读 3.2k
已采纳

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

5

部分代码如下
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 go__C 2017-06-03 03:02

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

    点赞 评论 复制链接分享
  • fight_in_dl 战在春秋 2017-06-03 02:30
     for (int i = 0; i < b; i++)
            cout << (char)cnm[i];  //前面不是cn吗,这里是cnm
    

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

    点赞 评论 复制链接分享
  • baij1230 baij1230 2017-06-03 03:11

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

    点赞 评论 复制链接分享
  • w746805370 Gikor 2017-06-03 03:18

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

    点赞 评论 复制链接分享
  • zhadaobuzhinaliqule zhadaobuzhinaliqule 2017-06-03 03:30

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

    点赞 评论 复制链接分享

相关推荐