windows中使用cin输入中文无法显示的问题。

我在学习C++的时候,使用的是VScode编写的程序。

在vscode中,默认的字符编码为UTF-8,所以GCC编译也默认为UTF-8,由于win终端默认的是GBK编码,导致总是乱码。后来我在程序中加入了一段代码,启用该程序时,将该程序终端改为UTF-8;代码如下;

1 system("chcp 65001");

刚开始测试程序时没有问题,直到我输入中文字符的时候,发现终端不显示(有时候直接显示乱码)。

我就尝试把win系统的默认编码全部改为UTF-8,但是事与愿违,使用cin获取字符时,中文字符还是不显示。但是我把编码格式全换成GBK的时候可以显示,我就开始怀疑是不是输入的字符格式还是GBK导致的。

后来查询了一番,了解到即使将win改为UTF-8编码,cmd终端的输入依旧是GBK编码。

这就没办法了,只能在程序中修改。但是改了代码的编码后,中文注释就会成乱码!所以才有这一个解决办法。

因为GCC编译会自动判断文件的编码方式,因为vscode默认是UTF8,所以GCC也默认为UTF-8,但是可以在程序编译的时候将其编译成为GBK,只需要在.vscode中tasks.json中加入

"-fexec-charset=GBK"

最终的该文件内容是这样的(看注释那里):

复制代码
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "C:\\VSCODE_STM32\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                //"-fexec-charset=GBK"  //如果要生成一个win用的,开启GBK选项
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}
复制代码

这样我们在windows下调试时,就能正常使用了。

本文作者:夜泽大大

本文链接:https://www.cnblogs.com/songmingze/p/16282444.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   夜泽大大  阅读(1402)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 星月神话 金莎
  2. 2 That Girl Olly Murs
星月神话 - 金莎
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

星月神话 - 金莎 (Kym)

词:金莎

曲:金莎

我的一生最美好的场景

就是遇见你

在人海茫茫中静静凝望着你

陌生又熟悉

尽管呼吸着同一天空的气息

尽管呼吸着同一天空的气息

却无法拥抱到你

如果转换了时空身份和姓名

但愿认得你眼睛

千年之后的你会在哪里

身边有怎样风景

我们的故事并不算美丽

却如此难以忘记

尽管呼吸着同一天空的气息

尽管呼吸着同一天空的气息

却无法拥抱到你

如果转换了时空身份和姓名

但愿认得你眼睛

千年之后的你会在哪里

身边有怎样风景

我们的故事并不算美丽

却如此难以忘记

如果当初勇敢的在一起

如果当初勇敢的在一起

会不会不同结局

你会不会也有千言万语

埋在沉默的梦里