Если у меня есть две таблицы, хранящиеся в переменных std::string
, как я могу отображать их бок о бок? В частности, ...Разбиение строк символом новой строки в C++
У меня есть std::string table1
, который содержит следующее:
X | Y
-------
2 | 3
1 | 3
5 | 2
У меня есть std::string table2
, который содержит следующее:
X | Y
-------
1 | 6
1 | 1
2 | 1
3 | 5
2 | 3
Мне нужно изменить их (или на самом деле просто распечатать их к стандартным выходам), чтобы появилось следующее:
X | Y X | Y
------- -------
2 | 3 1 | 6
1 | 3 1 | 1
5 | 2 2 | 1
3 | 5
2 | 3
Другими словами, у меня есть две таблицы, хранящиеся в переменных std::string
с символами новой строки, разделяющими строки.
Я хотел бы напечатать их на экране (используя std::cout
), чтобы таблицы отображались бок о бок, вертикально выровненные вверху. Как я могу это сделать?
Например, если я мог бы сделать что-то вроде std::cout << table1.nextToken('\n')
где nextToken('\n')
дает следующий маркер и маркеры разделяются '\n'
характер, то я мог бы придумать способ, чтобы перебрать все маркеры, и как только все table1
лексем , я мог бы просто напечатать символы пробела, чтобы оставшиеся токены table2
были правильно выровнены по горизонтали. Но такой функции nextToken(std::string)
не существует. По крайней мере, я не знаю об этом.
См [это QA] (http://stackoverflow.com/q/236129/485561) и [Boost.StringAlgo] (HTTP : //www.boost.org/doc/libs/release/doc/html/string_algo.html). – Mankarse
Отлично, спасибо :) – synaptik