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

C++中使用auto范围循环实现逐次输入数字的问题如何解决?

问题根因

C++语法规定,循环、分支等控制语句后没有显式书写花括号时,只有紧接的第一条语句会被纳入对应控制块执行。你当前的代码中,for循环没有添加花括号,仅std::cout打印语句属于循环体,输入、存入数组的两行代码会在循环全部执行完毕后才运行一次,因此会出现先打印全部三类商品的输入提示,再仅支持一次输入的问题。

修复后的完整代码

#include <iostream>
#include <string>
#include <vector>

int main(){
    std::vector<std::string> products = {"burgers","fries","sodas"};
    std::vector<int> numbers = {};
    int a;
    // 给for循环添加花括号,将输入、存值逻辑都纳入循环体
    // 此处将auto n改为const auto&是可选优化,避免字符串不必要拷贝,直接写auto n也可正常运行
    for (const auto& n : products) {
        std::cout << "Enter number of " << n << ": \n";
        std::cin >> a;
        numbers.push_back(a);
    }
    return 0;
}

修改后代码会每打印一条商品输入提示,就等待用户输入对应数值并存入numbers数组,完全匹配预期的交互效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:36:03