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

C++移除指定字符程序仅处理首个单词,如何修复?

修复移除句子中所有指定字符的C++程序

嘿,你的问题根源很好找:std::cin >> s只能读取到第一个空格(或换行、制表符)为止,所以程序实际上只处理了句子的第一个单词,自然看起来只有首个单词里的目标字符被移除了。

要解决这个问题,你需要用std::getline来读取整行输入(包含空格的完整句子),同时确保输入流的缓冲区状态正常。下面是修改后的完整代码:

#include <iostream>
#include <string>
#include <algorithm>

int main() {
    std::string s;
    char c;
    
    std::cout << "Enter the string : ";
    // 用getline读取整行输入,包含空格
    std::getline(std::cin, s);
    
    std::cout << "\nEnter the character : ";
    // cin >> c会自动跳过前导空白(包括换行),可以正常读取目标字符
    std::cin >> c;
    
    /* Removing character c from s */
    s.erase(std::remove(s.begin(), s.end(), c), s.end());
    
    std::cout << "\nString after removing the character " << c << " : " << s << std::endl;
    return 0;
}

关键改动说明:

  • 把std::cin >> s替换成std::getline(std::cin, s):这个函数会读取从当前位置到换行符的所有字符(换行符本身会被丢弃),这样就能拿到包含空格的完整句子了。
  • 无需额外处理缓冲区换行:std::cin >> c会自动跳过输入流中的前导空白字符(包括用户输入字符串后按下的换行符),所以可以正常读取目标字符。

测试一下:比如输入字符串"Hello world, let's remove all 'l' characters!",输入目标字符'l',程序会输出"Heo word, et's remove a '' characters!",所有的'l'都被正确移除了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:27:00