動機
編程題常用需求,比如輸入兩行數據。
解決思路:使用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;
}