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;
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM