使用cin读取以空格分隔的int的输入

时间:2019-01-11 15:13:04

标签: c++ cin cout

我是C ++的初学者,刚刚开始。

我想使用cin读取由空格分隔的整数行,存储并处理它们,比如说将每个整数乘以2。

输入为:

1 2 3 4

及其输出为:

2 4 6 8

我希望程序在按 Enter 后立即执行。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

简单的for循环并将值存储在vector中将为您完成工作;

#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>

using namespace std;

int main() {
    vector<int> vec;
    std::string input;

    getline(cin, input); // get input until newline

    istringstream sstr(input);
    int ele;

    while (sstr >> ele) {
       vec.push_back(ele);
    }

    transform(vec.begin(), vec.end(), vec.begin(), [](int x) {
        return 2 * x;
    });

    for (const auto &ele: vec) {
        cout << ele << " ";
    }

    return 0;
}

编辑:

根据Jerry Coffin的正确建议,您可以通过transformforstd::transform(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "), [](int x) { return 2 * x; });循环合并为一行

请不要忘记为其包含iterator头文件。