1.vscode在内置终端输出中文很简单,只要是程序正确,utf_8编码格式,就没问题。无论是task的编译过程或者是launch的运行和调试过程,只要使用内置终端,vscode默认都是用utf_8编码格式解析出task编译生成的可执行文件.exe,终端就不会输出中文乱码。
2.有兄弟不想用内置终端输出的,想要在windows外置终端输出的话,那么就需要在launch的配置列表(configurations)中将"externalConsole": faluse改为"externalConsole": true,即调用外部控制台,外置终端。launch设置如下:
{
"configurations": [
{
"name": "(gdb) c++启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\employeemanagementsystem\\source_files\\GBK_execution.exe", //这里是需要设置的gbk.exe路径,必须要是详细路径!
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true, //这里改成true,启动外部控制台
"MIMode": "gdb",
"miDebuggerPath": "C:\\Program Files\\mingw64\\bin\\gdb.exe ",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text":"-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
3.但是发现,按照上述所说,在内置终端中打印就不会出现中文乱码,但是利用launch的外置终端运行调试的时候就会出现乱码,这是为何?这是因为windows电脑中国区一般会利用gbk的解码方式,所以你task调试时候生成的可执行文件.exe是utf_8转换而来,所以出现解码矛盾了。那么如何解决?网上方法很多,但是我发现可以添加一个task任务,这样有两个task任务就可以编译生成两个可执行文件.exe,一个是utf_8的.exe,另外一个是gbk的.exe,然后将launch中的程序执行路径修改为gbk的.exe,这样launch的打印输出和task的打印输出就都可以实现中文不乱码输出了!那么task修改如下:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成utf_8活动文件", //任务名称可以更改,这里是第一个任务配置
"command": "C:\\Program Files\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"*.cpp",
"-I",
"${workspaceFolder}\\employeemanagementsystem\\head_files",
//"${workspaceFolder}\\employeemanagementsystem\\source_files",
"-o",
"${fileDirname}\\utf_execution.exe", //这里生成的是utf.exe可执行文件
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "调试器生成的任务。"
},
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成gbk活动文件", //这里的任务名字可以更改,这里是第二个任务配置
"command": "C:\\Program Files\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"*.cpp",
"-I",
"${workspaceFolder}\\employeemanagementsystem\\head_files",
//"${workspaceFolder}\\employeemanagementsystem\\source_files",
"-o",
"${fileDirname}\\GBK_execution.exe", //这里生成的是gbk.exe可执行文件
"-fexec-charset=GBK" //这里是将utf转换为gbk编码,那么生成的就会是gbk.exe
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "调试器生成的任务。"
},
],
"version": "2.0.0"
}
4.到此就结束了,是不是很简单?这里的task写成了两个调试任务,我们可以自己定义它的名称区分生成的utf_8编码的.exe文件或者gbk编码的.exe文件。我这里的task和launch配置文件用于编译调试运行多文件c++程序没有问题,可以作为一个基础模板,关于其中不同的参数可以上网查,本篇需要有一定的vscode基础哈。最后附上另外一个vscode调试c++的启动配置文件c_cpp_properties.json和我的目录情况,有需要的同学可能会用到!
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}\\employeemanagementsystem\\head_files\\**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"cStandard": "c17",
"cppStandard": "gnu++14",
"intelliSenseMode": "windows-gcc-x64",
"compilerPath": "C:/Program Files/mingw64/bin/g++.exe"
}
],
"version": 4
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cd27212a0b034c6598b0270d782f9c0e.png)