CLion中编写C/C++代码运行cout输出中文乱码-多种解决方法

问题案例:

#include <iostream>

using namespace std;

int main() {
    std::cout << "Hello, World!" << std::endl;
    cout << "I 喜欢 c++" << endl;
    cout << "I love c++" << endl;
    return 0;
}

运行结果:

解决方法:

方法1.引入windows.h库。main函数里加上设置控制台输出编码。

示例代码:

#include <iostream>
#include "windows.h"
using namespace std;

int main() {
    SetConsoleOutputCP(CP_UTF8);
    std::cout << "Hello, World!" << std::endl;
    cout << "I 喜欢 c++" << endl;
    cout << "I love c++" << endl;
    return 0;
}

结果 :

方式2:main函数加上system("chcp 65001");

示例代码:

#include <iostream>
//#include "windows.h"
using namespace std;

int main() {
//    SetConsoleOutputCP(CP_UTF8);
    system("chcp 65001");
    std::cout << "Hello, World!" << std::endl;
    cout << "I 喜欢 c++" << endl;
    cout << "I love c++" << endl;
    return 0;
}

输出结果:  会多一行

以上方法都不完美,代码里都会加东西,甚至影响输出结果。

完美方法3:改为GBK格式

右下角点击utf-8,改为GBK格式,并点击转换即可。

### VSCode中配置C/C++环境以避免中文乱码 为了确保VSCode中的C/C++项目能够正常显示和处理中文字符,在配置过程中需要注意几个关键设置。 #### 创建工作区 随便建立一个空文件夹作为VSCode的工作区,然后用VSCode打开此文件夹。所有的后续配置仅在此特定文件夹内有效;对于新创建的文件夹(即新的工作区),需重复相同的配置过程[^1]。 #### 安装必要的扩展 安装Microsoft官方提供的C/C++扩展包,该工具集提供了 IntelliSense、调试支持以及其他功能来增强 C 和 C++开发体验。 #### 设置launch.json 在`.vscode`目录下的`launch.json`文件用于定义启动配置。当涉及到可能存在的编码问题时,可以考虑加入如下所示的部分配置项: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/a.exe", // 编译后的可执行程序路径 "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", // GDB 路径 "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing" }, { "description": "Set charset to UTF-8", "text": "set charset utf-8" // 设定GDB使用的字符集为UTF-8 } ], "preLaunchTask": "build", // 构建任务名称 "internalConsoleOptions": "openOnSessionStart" } ] } ``` 上述JSON片段通过指定`set charset utf-8`命令告诉GDB采用何种字符编码方式运行,从而有助于防止终端输出出现乱码现象。 #### 修改源代码 考虑到某些情况下控制台本身也可能是造成乱码的原因之一,可以在源代码开头处添加以下两行语句以便于Windows平台上的应用程序正确识别并转换输入/输出流所涉及的文字编码格式: ```cpp #include <windows.h> // ... SetConsoleOutputCP(CP_UTF8); SetConsoleCP(CP_UTF8); ``` 这两条函数调用分别设置了当前控制台窗口的标准输出与标准输入的代码页至UTF-8模式,使得即使是在非Unicode环境下也能较好地兼容多字节字符集的语言表达形式。 #### 测试验证 最后编写一段简单的测试代码如下面的例子一样保存为`main.cpp`: ```cpp #include <iostream> using namespace std; int main(){ cout << "你好世界!" << endl; return 0; } ``` 编译并运行这段小程序,观察其是否能顺利打印出预期的结果——“你好世界!”而非乱码,则说明整个流程已经成功解决了潜在的中文乱码难题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值