Формат вывода в таблицу, C ++ - PullRequest
8 голосов
/ 20 июля 2011

Как вывести данные на консоль в виде таблицы в C ++? В C # есть вопрос, но он мне нужен в C ++.

Это, кроме C ++: How To: Лучший способ рисовать таблицу в консольном приложении (C #)

Ответы [ 4 ]

10 голосов
/ 20 июля 2011

Вот небольшой пример того, что имеет iomanip:

#include <iostream>
#include <iomanip>

int main(int argc, char** argv) {
    std::cout << std::setw(20) << std::right << "Hi there!" << std::endl;
    std::cout << std::setw(20) << std::right << "shorter" << std::endl;
    return 0;
}

Есть и другие вещи, которые вы можете сделать, например, установить точность чисел с плавающей запятой, изменить символ, используемый в качестве отступа при использовании setwвывод чисел во что-то отличное от базы 10 и т. д.

http://cplusplus.com/reference/iostream/manipulators/

5 голосов
/ 20 июля 2011

Разве вы не можете сделать что-то очень похожее на пример C #:

String.Format("|{0,5}|{1,5}|{2,5}|{3,5}|", arg0, arg1, arg2, arg3);

Как:

printf("|%5s|%5s|%5s|%5s|", arg0, arg1, arg2, arg3);

Вот ссылка, которую я использовал, чтобы сделать это: http://www.cplusplus.com/reference/clibrary/cstdio/printf/

3 голосов
/ 30 апреля 2016

Я не смог найти то, что мне понравилось, поэтому я сделал это.Найдите его в https://github.com/haarcuba/text-table

Вот пример его вывода:

+------+------+----+
|      |Sex   | Age|
+------+------+----+
|Moses |male  |4556|
+------+------+----+
|Jesus |male  |2016|
+------+------+----+
|Debora|female|3001|
+------+------+----+
|Bob   |male  |  25|
+------+------+----+
0 голосов
/ 19 мая 2014

Проверьте длину значения столбца, а также учитывайте длину значения для форматирования.

printf(" %-4s| %-10s| %-5s|\n", "ID", "NAME", "AGE");

Посмотрите, как был разработан интерфейс оболочки MySQL, это даст вам хорошую идею.

...