You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:C++中cin在SciTE等文本编辑器无法读取键盘输入

解决文本编辑器中C++程序无法读取键盘输入的问题

首先得掰扯清楚:文本编辑器(比如SciTE、Sublime Text)本质只是写代码的工具,不是程序运行的终端环境——当你在编辑器里直接运行编译好的程序时,很多默认配置下,编辑器要么不会弹出能接收输入的独立控制台,要么没把输入流正确绑定到程序,这就是你反复遇到的问题。结合你用Makefile编译、只能用文本编辑器的场景,给你几个实用的解决办法:

1. 直接在系统终端运行程序(最稳妥)

这是绕开编辑器限制的最简单方式:

  • 先用Makefile完成编译,生成可执行文件(比如Linux/macOS下的./your_program,Windows下的your_program.exe)
  • 打开系统自带的终端(Windows用命令提示符/PowerShell,Linux/macOS用自带终端)
  • 切换到可执行文件所在的目录,输入./your_program(Windows直接输your_program.exe)运行
    终端本身就是标准的输入输出环境,程序在这里肯定能正常读取键盘输入。

2. 配置SciTE弹出独立控制台运行

SciTE其实可以改配置让它运行程序时打开独立窗口,操作步骤:

  • 找到SciTE的全局配置文件SciTEGlobal.properties,或者用户目录下的SciTEUser.properties(后者修改不会影响全局设置)
  • 添加或修改C++相关的运行配置:
# Windows系统配置
command.compile.c++=g++ -Wall -c "$(FileName)" -o "$(FileName).o"
command.build.c++=g++ -Wall "$(FileName).o" -o "$(FileName).exe"
command.run.c++=cmd /c start cmd /k "$(FileName).exe"

# Linux/macOS系统配置(替换上面的run行)
command.run.c++=x-terminal-emulator -e ./$(FileName)

保存配置后重启SciTE,再编译运行程序,就会弹出独立的控制台窗口,程序就能接收键盘输入了。

3. Sublime Text的构建系统调整

如果偶尔用Sublime Text,也可以修改它的构建系统来解决:

  • 打开Sublime Text,点击Tools > Build System > New Build System
  • 粘贴以下配置(Windows版):
{
    "cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c++, source.cpp",
    "variants": [
        {
            "name": "Run",
            "cmd": ["start", "cmd", "/k", "${file_path}/${file_base_name}.exe"]
        }
    ]
}

保存为C++ Run.sublime-build,之后编译运行时选择这个构建系统,就能弹出独立终端运行程序、接收输入了。

补充:Codepad的特殊情况

Codepad是在线工具,它的输入逻辑是预先填写,不是运行时实时输入——你得在页面找到专门的输入框,把程序需要的输入内容提前写进去,再点击运行,程序才能读取到这些内容,这是它的设计限制,没法做实时交互输入。

最后提一句:Makefile只是帮你自动化编译的工具,和程序能不能读输入没关系,核心问题还是程序运行的环境没提供标准输入的交互能力。

内容的提问来源于stack exchange,提问作者Hoosain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:42:33