debugging 如何在“Visual Studio 2022”IDE中配置C++控制台程序的调试,以便正确反映UTF-8编码的文本?

kkbh8khc  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(473)

我用C++编写小型控制台程序。我在“Windows 10”操作系统上工作,通过WSL我在“Ubuntu”操作系统上工作。我通过std::cout使用窄的char字符将UTF-8编码的文本(英语和西里尔字母、中文象形文字、表情符号)输出到控制台。
在“VS Code”编辑器和“Visual Studio 2022”IDE中调试程序时,我需要事先在调试控制台中将代码页切换为UTF-8。(在“Windows 10”中使用最终版本的程序时,我在shell中手动切换代码页,但在“Ubuntu”中不需要,默认情况下有UTF-8编码。
我有个问题:在“VS Code”编辑器和“Visual Studio 2022”IDE中,我很难找到如何将初步命令传递到调试控制台。

**重要!**我知道这可以使用Windows API函数以编程方式完成,但我希望保持源代码跨平台,而不是混乱。

我还看到有人在Windows注册表中为shell“cmd.exe”规定了初步命令,但我不想对注册表进行更改。
我在'VS Code'编辑器中找到了一种可以接受的方法(我安装了一个Microsoft扩展'ms-vscode.cpptools'来使用C++)。在launch.json文件中,我指定了一个选项

"console": "integratedTerminal"

字符串
由于在“VS Code”编辑器的集成终端中使用了PowerShell,因此我能够使用profile来传输初步命令:

PS C:\> $profile
C:\Users\Илья\Documents\PowerShell\Microsoft.PowerShell_profile.ps1


Microsoft.PowerShell_profile.ps1文件中,我写了以下代码:

[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8


从那以后,一切都如我所愿:x1c 0d1x的数据

我的问题:如何在“Visual Studio 2022”IDE中配置C++控制台程序的调试,以便在调试控制台中正确反映UTF-8编码的文本?(无需更改注册表或更改源代码。)是否可以在PowerShell上使用“cmd.exe”更改“Visual Studio 2022”IDE中的调试控制台?(然后我就可以使用配置文件了。)是否可以将初步命令或参数传递到'Visual Studio 2022' IDE的调试控制台?

pw136qt2

pw136qt21#

谢谢你的澄清。我以为你在找全自动的方式。如果允许手动输入chcp 65001,Visual Studio可以实现您想要的。
有一个扩展:Microsoft Child Process Debugging Power Tool 2022您需要安装并启用扩展。工具栏:Debug-> Other debug targets-> Child process:x1c 0d1x的数据
并且,在your project -> Properties -> C/C++ -> Command Line.中添加/utf-8标志
打开CMD进程。使用Debug-> Attach to Process连接CMD。先输入chcp 65001。然后在CMD中运行你的exe,断点会被命中,文本输出正确。
它也适用于Win 11的终端->命令提示符,但不能调试终端->powershell

相关问题