Разделение строк по символу новой строки в переполнении стека

Если у меня есть две таблицы, хранящиеся в std::string переменные, как я могу отобразить их рядом? Особенно…

я имею 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) Функция не существует — я не знаю об этом, по крайней мере.

3

Решение

Ключевые слова: istringstream, getline

Implementaion:

#include <iostream>
#include <sstream>
int main()
{
std::string table1 =
" X | Y\n""-------\n"" 2 | 3\n"" 1 | 3\n"" 5 | 2\n";
std::string table2 =
" X | Y\n""-------\n"" 1 | 6\n"" 1 | 1\n"" 2 | 1\n"" 3 | 5\n"" 2 | 3\n";

std::istringstream streamTable1(table1);
std::istringstream streamTable2(table2);
while (!streamTable1.eof() || !streamTable2.eof())
{
std::string s1;
getline(streamTable1, s1);
while (s1.size() < 9)
s1 += " ";
std::string s2;
getline(streamTable2, s2);
std::cout << s1 << s2 << std::endl;
}
}
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]