Основной инструмент вывода в C ++ - std::ostream
, но он очень ограничен.
Можно (но не всегда легко) форматировать таблицы, используя , если
вывод использует шрифт фиксированной ширины, но это редко случается сегодня.
Если вы можете обойтись без использования шрифта фиксированной ширины, манипуляторы
iostream должно быть достаточно; определите ширину каждого столбца и установите
ширина (и выравнивание - влево или вправо), используя соответствующие
манипуляторы при выводе поля.
В противном случае вам придется определить, на каком языке разметки печатается
вывод должен использовать & ndash; Postscript широко распространен, но далеко не универсален.
Сделав это, вам придется перебирать строки, и в каждой строке
по столбцам, генерируя правильную разметку для каждого. Если вы
генерировать что-то вроде Postscript (или большинство языков разметки принтера),
вам придется отслеживать абсолютные позиции, и, возможно, рассчитать
ширина столбца и т. д., определяющая ширину каждого поля в зависимости от
используемый шрифт и ширина каждого символа в этом шрифте.
Более одной программы, которую я видел, выводили исходный текст LaTeX, а затем использовали
system
для вызова LaTeX (или pdflatex
для создания PDF); это предполагает
что LaTeX установлен на всех машинах, на которых программа
будет работать, но LaTeX позаботится обо всех вышеперечисленных расчетах; вы
просто выведите столбцы, разделенные '&'
, каждой строкой
завершается двумя '\'
, с соответствующими окружающими командами, и
LaTeX сделает все остальное. (Это решение я бы порекомендовал, если вы можете
возможно навязать присутствие LaTeX. Как старый и не удобный
как таковой, LaTeX по-прежнему генерирует лучший результат любой программы, которую я
пробовал.)