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

C++ vector<string>添加字符串失效:反转句子代码未达预期效果

问题定位

  • 输入读取逻辑错误:cin >> input 默认以空格、换行、制表符等空白字符作为输入分隔符,输入带空格的句子时,只会读取第一个空格前的内容,比如示例输入只能读到I,后续所有字符都不会被存入input变量,自然无法完成单词拆分。
  • 单词拆分逻辑缺失:仅在遇到空格时才会把临时存储的单词存入vector,但是句子最后一个单词末尾没有空格,遍历结束后临时变量里存储的最后一个单词不会被写入vector。
  • 输出逻辑不符合要求:现有代码是正序遍历vector输出,没有实现倒序输出的效果,也没有处理首输出单词首字母大写、末尾无多余空格的细节要求。

修正后代码

#include<iostream>
#include<string>
#include<vector>
#include<cctype>
using namespace std;

int main()
{
    vector<string> s;
    string input;
    // 读取整行输入,保留所有空格
    getline(cin, input);
    string temp = "";
    
    for(int i=0; input[i]!='\0'; i++)
    {
        if(input[i] == ' ')
        {
            s.push_back(temp);
            temp = "";
        }
        else
        {
            temp += input[i];
        }
    }
    // 补存最后一个单词
    if(!temp.empty()) {
        s.push_back(temp);
    }
    
    // 倒序输出单词
    for(int i = s.size()-1; i >= 0; i--)
    {
        if(i == s.size()-1) {
            // 首个输出单词首字母大写
            cout << (char)toupper(s[i][0]);
            cout << s[i].substr(1) << " ";
        } else if (i == 0) {
            // 末尾输出不加多余空格
            cout << s[i];
        } else {
            cout << s[i] << " ";
        }
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:39:02