cout语句输出中文运行后中文乱码
时间: 2023-12-28 20:04:32 浏览: 71
在 C++ 中,cout 输出中文会出现乱码的问题,是因为 cout 默认使用 ASCII 编码进行输出,而中文字符是使用 UTF-8 或 GBK 编码的。解决这个问题可以通过以下两种方法:
1. 使用宽字符类型 wcout 进行输出,如下所示:
```
#include <iostream>
#include <locale>
using namespace std;
int main() {
locale loc("zh_CN.UTF-8"); // 设置输出编码为 UTF-8
wcout.imbue(loc); // 设置输出流的 locale
wcout << L"你好,世界!" << endl; // 使用宽字符类型输出中文
return 0;
}
```
2. 将中文字符串转换成 UTF-8 编码后再进行输出,如下所示:
```
#include <iostream>
#include <string>
#include <iconv.h>
using namespace std;
int main() {
string str = "你好,世界!";
const char* in = str.c_str();
size_t inlen = str.length();
char outbuf[1024] = {0};
char* out = outbuf;
size_t outlen = sizeof(outbuf);
iconv_t cd = iconv_open("UTF-8", "GBK"); // 将 GBK 编码转换为 UTF-8 编码
iconv(cd, (char**)&in, &inlen, &out, &outlen);
cout << outbuf << endl; // 输出转换后的字符串
iconv_close(cd);
return 0;
}
```
不过需要注意的是,使用第二种方法需要安装 iconv 库,并且在编译时需要添加 `-liconv` 选项。
阅读全文