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

C++如何从同一行读取n个整数并存入vector容器?

嘿,其实这里有个小误区要先澄清下:你原本写的C++ for循环逻辑,和Java里用Scanner.nextInt()的行为其实是完全一致的——两者都会自动跳过所有空白字符(不管是空格、换行还是制表符),所以不管那n个整数是跟n在同一行,还是分几行输入,都能正常读取到vector里。

但我猜你真正的需求是必须强制从同一行读取这n个整数(比如如果同一行的数字不够n个,就判定输入无效),对吧?那确实需要调整代码,因为默认的std::cin不会区分行的边界。

给你两种常用的解决方案:

方案一:n和目标整数在同一行

如果你的输入格式是n 数字1 数字2 ... 数字n这样整行输入,那可以先读取整行内容,再用字符串流来解析:

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

int main() {
    std::string input_line;
    // 先读取完整的一行输入
    std::getline(std::cin, input_line);
    // 把整行内容转换成一个输入流,方便逐个数读取
    std::istringstream line_stream(input_line);

    int n;
    line_stream >> n; // 从行里读出n

    std::vector<int> vec;
    int num;
    for (int i = 0; i < n; ++i) {
        if (line_stream >> num) {
            vec.push_back(num);
        } else {
            // 同一行里的数字不够n个,报错处理
            std::cerr << "输入错误:该行的数字数量不足n个!" << std::endl;
            return 1;
        }
    }

    // 测试输出(可选)
    for (int x : vec) {
        std::cout << x << " ";
    }
    std::cout << std::endl;

    return 0;
}

方案二:n单独一行,目标整数在下一行

如果你的输入格式是先单独输入n换行,再输入一行包含n个整数,那需要先处理cin >> n留下的换行符,再读取目标行:

#include <iostream>
#include <vector>
#include <sstream>
#include <string>
#include <limits> // 用于获取输入流的最大长度

int main() {
    int n;
    std::cin >> n;

    // 关键步骤:跳过n后面的换行符(因为cin读整数后会把换行留在缓冲区里)
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

    std::string nums_line;
    std::getline(std::cin, nums_line);
    std::istringstream line_stream(nums_line);

    std::vector<int> vec;
    int num;
    for (int i = 0; i < n; ++i) {
        if (line_stream >> num) {
            vec.push_back(num);
        } else {
            std::cerr << "输入错误:该行的数字数量不足n个!" << std::endl;
            return 1;
        }
    }

    // 测试输出(可选)
    for (int x : vec) {
        std::cout << x << " ";
    }
    std::cout << std::endl;

    return 0;
}

这两种方案都能严格保证你读取的n个整数来自同一行,满足你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:37:08