C++输入多行数据

动机

编程题常用需求,比如输入两行数据。

解决思路:使用getline

程序

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

using namespace std;

int main()
{
    vector<int> vec;
    vector<vector<int>> vec_all;
    string lineData;
    int order = 0;

    while(getline(cin,lineData))
    {
        while(!lineData.empty())
        {
           auto loc = find(lineData.begin(), lineData.end(), ' ');
           order = distance(lineData.begin(),loc);

           vec.push_back(stoi(lineData.substr(0, order)));
           lineData.erase(0, 1+order);
        }
        vec_all.push_back(vec);
        vec.erase(vec.begin(), vec.end());
    }

    for(int i = 0; i < vec_all.size(); ++i)
    {
        cout << "Line " << i+1 << " : ";
        for(int j = 0; j < vec_all[i].size(); ++j)
        {
            cout << vec_all[i][j] <<" ";
        }
        cout << endl;
    }

    return 0;
}

cin方式

cin遇到错误或者结束符才会结束读取,不能直接使用。

验证程序

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int data;
    vector<int> vec;

    while(cin >> data)
    {
        vec.push_back(data);
    }

    for(auto i:vec)
        cout << i << endl;

    return 0;
}
posted @ 2018-11-07 11:41  静世孔明  阅读(9774)  评论(0编辑  收藏  举报