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

C++代码问题:移除字符串中的辅音并保留元音时无法处理多空格分隔的多单词字符串

问题分析与修复方案

嘿,我一眼就瞅出你代码里的两个关键问题啦,这就是为啥处理多空格分隔的字符串时出问题:

1. 字符串读取的核心问题

你用cin >> s来读取输入字符串,但这个操作只会读取到第一个空格就停止!测试输入里的第二个单词IvfHOSNv根本没被读进变量s里,自然也就不会被处理,这就是你只得到第一个单词元音输出的原因。

2. 空格处理的笔误

你代码里写了if(isspace(s[i])){cout<<"n";},这明显是手滑写错了吧?你本来想输出空格保留原格式,结果写成输出字母n了,这也会导致输出不符合预期。


修复后的完整代码

我给你调整了代码,解决了上述问题,还优化了元音判断的逻辑,让代码更简洁直观:

#include <iostream>
#include <string>
#include <cctype> // 用于isspace函数

using namespace std;

int main() {
    int T;
    cin >> T;
    cin.ignore(); // 跳过cin>>T后留下的换行符,避免第一个getline读空行
    
    // 用字符串存储所有元音,判断起来更方便
    string vowels = "aeiouAEIOU";
    
    for(int n = 0; n < T; n++){
        string s;
        getline(cin, s); // 读取整行内容,包括空格分隔的所有单词
        
        for(char c : s){ // 范围for循环,遍历每个字符更清晰
            // 如果是元音,直接输出
            if(vowels.find(c) != string::npos){
                cout << c;
            }
            // 如果是空格,直接输出空格保持原格式
            else if(isspace(c)){
                cout << " ";
            }
            // 辅音直接跳过,无需处理
        }
        cout << endl;
    }
    return 0;
}

测试验证

用你的测试输入:

wdTSFuI IvfHOSNv

运行修复后的代码,输出完全符合预期:

uI IO

这样就完美解决你的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:27:45