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

为何我的C++代码在CodeForces可运行但CodeBlocks陷入输入循环?

问题分析:CodeBlocks中C++程序陷入无限输入循环

刚接触CodeForces,遇到如下问题:我的C++代码在CodeForces编译器可正常运行,但在Windows 10系统的CodeBlocks 20.03(GCC版本8.1.0)中执行时,将测试用例输入粘贴到控制台后,程序陷入无限输入循环,无法输出预期结果。对应题目是CodeForces的236A题,代码如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    set<char> c;
    char s;
    while(cin>>s)c.insert(s);
    cout<<(c.size()%2?"IGNORE HIM!":"CHAT WITH HER!");
}

问题原因

  • 循环条件while(cin>>s)会持续等待输入,直到输入流遇到终止信号或出错。CodeBlocks的Windows控制台里,粘贴完测试用例后,程序无法感知输入已结束,会一直卡在循环里等待新的输入。
  • CodeForces在线编译器会自动处理输入结束(读完测试用例就终止输入流),但本地控制台需要手动触发结束信号。

解决办法

有两种实用方式终止输入:

  1. 手动触发结束:粘贴测试用例后,按下Ctrl+Z(Windows控制台的输入终止符),再按回车,程序就会结束循环并输出结果。
  2. 修改代码逻辑:题目输入是单个无空格的字符串,直接读取整行字符串处理更稳妥,避免依赖输入流终止信号,修改后代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
    set<char> c;
    string s;
    cin >> s;
    for(char ch : s) {
        c.insert(ch);
    }
    cout << (c.size()%2 ? "IGNORE HIM!" : "CHAT WITH HER!");
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:43:12