C++中的输入输出流函数非常强大,getline函数可以读取文件或终端的一行输入。在笔试题中经常遇到不定输入的问题,下面记录一下如何从终端读入行数不定的输入数据。
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main()
{
//line为每一行,word为每一行的一个数
string line, word;
int tmp;
//单个输入数据
vector<int> in;
//一行输入数据
vector<vector<int> > se;
//循环读入数据
while (getline(cin, line))
{
//直到输入长度为0的时候,结束读入
if (line.size() == 0) break;
//使用istringstream 获取读入的一行
istringstream record(line);
//读取每一行中的单个数据
while (record >> word)
in.push_back(atoi(word.c_str()));
se.push_back(in);
in.clear();
}
for (int i = 0; i < se.size(); i++)
{
for (auto m : se[i])
printf("%d ", m);
printf("\n");
}
}
输出结果
1 2 3 4 5 (回车)
6 7 8 9 10 (回车)
(回车)
1 2 3 4 5
6 7 8 9 10
请按任意键继续. . .