鱼C论坛

 找回密码
 立即注册
查看: 88|回复: 3

关于VS code中cin和cout问题?

[复制链接]
发表于 前天 08:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么键盘输入中文后,,用cout输出不显示键盘输入的文字,是哪里设置不对吗?

我画红线的地方为什么没有输出文字?

我画红线的地方为什么没有输出文字?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 前天 08:38 | 显示全部楼层
关于VS Code中cout无法显示中文的解决方法

这个问题通常由以下原因导致,请按顺序检查:

  • 1. 控制台编码不匹配
    VS Code终端默认编码可能与程序编码不一致。尝试:

    1. chcp 65001  // 将终端设置为UTF-8编码
    复制代码

    在VS Code终端中右键选择以UTF-8重新打开
  • 2. 源码文件编码问题
    确保源文件保存为带BOM的UTF-8:
    点击VS Code右下角编码标识 → Save with Encoding → 选择UTF-8 with BOM
  • 3. 添加本地化设置
    在代码开头添加:

    1. #include <locale>
    2. using namespace std;

    3. int main() {
    4.     setlocale(LC_ALL, "chs");  // 或 "zh_CN.UTF-8"
    5.     // 后续代码...
    6. }
    复制代码

  • 4. 编译器参数设置
    对于g++编译器,添加编译选项:

    1. -fexec-charset=GBK  // Windows系统推荐

    2. -fexec-charset=UTF-8  // Linux/WSL推荐
    复制代码



注意:不同系统终端默认编码不同:
  • Windows CMD默认GBK
  • Windows Terminal建议设为UTF-8
  • Linux/macOS默认UTF-8


如果仍不生效,建议使用调试器查看变量实际存储值,确认是否是输入/输出环节的编码问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 09:05 | 显示全部楼层
默认情况下,VS Code 的「调试控制台」只是一个日志输出窗口,并不能像普通终端那样把你的键盘输入实时 “打给” std::cin。

要把调试时的终端切到可以交互 stdin 的「集成终端」或「外部控制台」。

在 .vscode/launch.json 里把终端改成 integratedTerminal :

  1. {
  2.   "version": "0.2.0",
  3.   "configurations": [
  4.     {
  5.       "name": "g++.exe build and debug",
  6.       "type": "cppdbg",
  7.       "request": "launch",
  8.       "program": "${fileDirname}/${fileBasenameNoExtension}.exe",
  9.       "args": [],
  10.       "stopAtEntry": false,
  11.       "cwd": "${workspaceFolder}",
  12.       "environment": [],
  13.       "console": "integratedTerminal",    // ← 这样才能在「终端」里输入,而不是 Debug Console
  14.       //"externalConsole": true,          // ← 或者打开这个,用外部窗口
  15.       "MIMode": "gdb",
  16.       "miDebuggerPath": "D:/mingw64/bin/gdb.exe",
  17.       "preLaunchTask": "g++ build active file"
  18.     }
  19.   ]
  20. }
复制代码


或者干脆用外部控制台
(不会的话,可以网上搜“”)

然后 如果要真正确保中文输入、输出无乱码/不丢失,就用 SetConsoleCP/SetConsoleOutputCP(CP_UTF8) + 宽字符流 std::wstring + _setmode(..., _O_U16TEXT)。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 11:52 | 显示全部楼层
试试std::cin>>str?

我好像记得getline只能给char数组用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-12 18:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表