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

C++向量输入程序需输入逗号才终止的问题及修复方法

问题描述

我正在编写一个程序,用于让用户向vector中输入数字并在控制台显示这些数字。目前每次输入数字后,程序都不会停止运行,除非输入逗号。请问该如何修复?

以下是我的代码:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int series_of_numbers;
    vector<int> seriesVector;

    cout << "Enter a series of numbers ending with 0, separated by space." << endl;

    while (cin >> series_of_numbers) {
        seriesVector.push_back(series_of_numbers);
    }

    for (int i = 0; i < seriesVector.size(); ++i) {
        cout << seriesVector[i] << " ";
    }

    return 0; 
}

控制台输入数字后程序不会终止,只有输入逗号这类非数字字符才会停止。


解决方案

你这段代码的问题出在循环条件上:while (cin >> series_of_numbers) 会持续读取输入,直到遇到无法转换为整数的内容才终止,但你提示用户的是“输入以0结束”,所以需要调整循环逻辑,让程序在读取到0时停止。

根据是否需要把终止用的0存入vector,有两种修改方式:

方式一:不保存终止用的0(更符合提示语义)

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int series_of_numbers;
    vector<int> seriesVector;

    cout << "Enter a series of numbers ending with 0, separated by space." << endl;

    while (cin >> series_of_numbers) {
        if (series_of_numbers == 0) {
            break; // 读取到0,立即终止循环
        }
        seriesVector.push_back(series_of_numbers);
    }

    // 用范围for循环遍历输出,代码更简洁
    for (int num : seriesVector) {
        cout << num << " ";
    }

    return 0; 
}

方式二:保存终止用的0

如果需要把结束标记0也存入vector,只需要调整判断和添加元素的顺序:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int series_of_numbers;
    vector<int> seriesVector;

    cout << "Enter a series of numbers ending with 0, separated by space." << endl;

    while (cin >> series_of_numbers) {
        seriesVector.push_back(series_of_numbers);
        if (series_of_numbers == 0) {
            break;
        }
    }

    for (int num : seriesVector) {
        cout << num << " ";
    }

    return 0; 
}

修改后,用户输入数字序列后输入0,程序就会终止并输出之前输入的数字,无需再输入逗号。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:53:27