CString 输出到控制台乱码
时间: 2023-07-04 13:07:24 浏览: 180
_CString_use_method.rar_CString排序_字符串
出现乱码的原因可能是编码格式不一致。CString 默认采用 Unicode 编码,而控制台默认使用的是 GBK 或者 ANSI 编码。
解决方法有两种:
1. 将控制台编码设置为 Unicode
在程序入口处(main 函数前)添加以下代码:
```c++
SetConsoleOutputCP(CP_UTF8);
```
这样就可以将控制台编码设置为 Unicode,这样输出的中文就不会乱码了。
2. 将 CString 转换为 GBK 或者 ANSI 编码
可以使用 CString 的 WideCharToMultiByte 函数将 Unicode 编码的 CString 转换为 GBK 或者 ANSI 编码。示例代码如下:
```c++
CString str = _T("中文");
int len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
char* buf = new char[len];
WideCharToMultiByte(CP_ACP, 0, str, -1, buf, len, NULL, NULL);
printf("%s\n", buf);
delete[] buf;
```
其中 CP_ACP 表示使用当前系统的 ANSI 代码页,如果要转换为 GBK 编码,则需要指定 CP_GBK。
阅读全文