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

C++从vector打印数字时缺失首个输入整数的问题排查

问题根因

你在进入while循环前已经执行了一次cin >> input读取了用户输入的第一个整数,但是没有将该值存入vector,就直接进入循环逻辑。循环的判断条件会再执行一次cin >> input,直接覆盖了第一次读取的数值,所以第一个输入的整数永远不会被存入容器,自然不会被打印输出。

修复方案

推荐使用第一种更简洁的方案:

  • 方案1:删除进入循环前多余的首次cin >> input语句,直接由循环条件执行输入读取判断
int main() {
    vector<int> numbers;
    int input;

    cout << "Please type your numbers" << endl;
    // 移除了多余的首次输入读取代码
    while ((cin >> input) && input != 0)
        numbers.push_back(input);

    print_numbers(numbers);
    return 0;
}
  • 方案2:保留首次输入读取逻辑,提前判断存入vector后再进入循环
int main() {
    vector<int> numbers;
    int input;

    cout << "Please type your numbers" << endl;
    cin >> input;
    // 首次读取的数值非0就先存入容器
    if (input != 0) {
        numbers.push_back(input);
        while ((cin >> input) && input != 0)
            numbers.push_back(input);
    }

    print_numbers(numbers);
    return 0;
}
可选优化建议

你当前的print_numbers函数在打印完所有数值后没有输出换行符,输出格式会不规范,可以在for循环结束后补充cout << endl;语句优化显示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:54:03