Читать одну строку в векторе с
std::vector<int> read_line()
{
std::vector<int> ints;
std::string line;
std::getline(std::cin, line);
int i;
std::stringstream ss(line);
while (ss >> i)
ints.push_back(i);
return ints;
}
, а затем все векторы с
std::vector< std::vector<int> > read_lines()
{
std::vector< std::vector<int> > lines;
while (std::cin) {
std::vector<int> line = read_line();
if (std::cin)
lines.push_back(line);
}
return lines;
}
Затем выведите результат с помощью
template<class T>
struct print : public std::unary_function<T,void>
{
print(std::ostream &out) : os(out) {}
void operator() (T x) { os << '[' << x << ']'; }
std::ostream &os;
};
void print_vector(const std::vector<int> &v)
{
std::for_each(v.begin(), v.end(), print<int>(std::cout));
std::cout << '\n';
}
int main()
{
std::vector< std::vector<int> > lines = read_lines();
std::for_each(lines.begin(), lines.end(), print_vector);
return 0;
}
Например:
$ cat input
1 2 3 4
5 6
7 8 9
10
$ ./try.exe <input
[1][2][3][4]
[5][6]
[7][8][9]
[10]