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

VS2022中C++重复单词检测程序执行异常及相关问题咨询

C++重复单词检测程序问题解答及书籍推荐

问题背景

我正在从Stroustrup的《C++程序设计原理与实践》一书学习编程,在Visual Studio 2022中运行检测重复单词的程序时遇到问题。

程序代码如下:

#include <iostream>

int main()
{
    std::string previous = " "; 
    std::string current; 
    while (std::cin>>current){ 
        if (previous == current)
            std::cout << "Repititive word: " << current << '\n';
    }
}

输入如"the cat cat jumped"这类句子后,按下Ctrl+Z并回车,程序无执行反应。了解到cmd.exe是逐行发送文本,但不知如何逐个输入单词。我还尝试修改循环条件为while (cin>>current EOF),但也无效;若直接按Ctrl+Z回车,程序会显示执行成功。想咨询:代码中应如何正确输入EOF字符?另外,能否推荐现代编程相关书籍?


一、EOF输入与代码修正

1. 核心代码问题

程序无输出的根本原因不是EOF输入,而是未更新previous变量。每次循环结束后,需要将当前读取的current赋值给previous,否则previous永远是初始的空格,无法匹配到重复单词。修正后的代码:

#include <iostream>

int main()
{
    std::string previous = " "; 
    std::string current; 
    while (std::cin >> current){ 
        if (previous == current)
            std::cout << "Repetitive word: " << current << '\n';
        previous = current; // 新增:更新上一个单词的记录
    }
}

2. Windows下正确输入EOF的方式

在cmd.exe中,输入流程应为:

  • 输入目标文本(比如the cat cat jumped),按下回车提交当前行;
  • 单独按下Ctrl+Z,再按回车,此时系统会向程序发送EOF信号,循环终止并处理所有输入。

3. 关于错误的循环条件

while (cin>>current EOF)是语法错误,原代码的while (std::cin >> current)是正确写法——这个表达式会在读取到EOF或输入失败时自动终止循环。


二、现代编程书籍推荐

C++方向

  • 《C++ Primer(第5版)》:覆盖C11及后续核心特性,是系统学习C的权威教材,适合从基础到进阶。
  • 《Effective Modern C++》:聚焦C11/14/17的现代特性,提供大量实用的编码技巧,帮助写出高效、符合现代风格的C代码。

通用编程与基础

  • 《代码整洁之道》:专注于代码可读性与可维护性,培养良好的编程习惯,适合所有开发者。
  • 《算法导论》:深入讲解算法设计与分析,是计算机科学领域的经典,夯实算法基础必备。

其他语言拓展

  • 《Python编程:从入门到实践》:Python入门优质书籍,理论结合实践,适合快速掌握Python并完成实际项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:20:16