MFC中输出String类型(内容为01串)出现乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC中输出String类型(内容为01串)出现乱码相关的知识,希望对你有一定的参考价值。

相关代码如上
程序运行结果是乱码,查了好久也没搞懂为什么

跟你的编码方式有关,将二进制位流与字符串之间的转换,必须使用同一种编解码方法,就是说字符串转化为二进制位时使用的何种编码方式,在将二进制解码为字符串时,要使用对应的解码方式。出现错位,不对应就是乱码。常用的有ascii码,gb2312,utf8等,楼主自行查阅。 参考技术A

UNICODE模式吧,这个模式下CString其实是WCHAR, 在Format中导入char会出问题。

简单解决方法,在Format之前,用一个临时CString中转一下:

CString tmp;
for(...)

...
    tmp = charHuffamnTable[Ascii[i].letter];
    str.Format(xx,xx,xx,tmp);//charHuffamnTable[Ascii[i].letter] -》 tmp

利用CString赋值的自动编码转换就可以了。

本回答被提问者和网友采纳

MFC中输出string;

MFC中或你包含的是CString头文件,如果想用cout输出string 类型,则需要先把string类型转换char*型,如上面例子:

#include<iostream>
#include<CString>

using std::cout;
using std::string ;
using std::endl;

main()
{
string a;
a="*******";
char* b=(char*)a.c_str(); //将string类型转为char*
cout<<b<<endl;
}

 










以上是关于MFC中输出String类型(内容为01串)出现乱码的主要内容,如果未能解决你的问题,请参考以下文章

MFC 中char转CString问题

子串统计

练习_输入一串整数类型字符串,然后倒着输出

c# 怎么将textbox控件中的内容转换为string

MFC中如何吧CString类型转换为double或int型??

MFC中如何吧CString类型转换为double或int型?