Формат вывода в таблице, C++

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

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

4 ответов


не можете ли вы сделать что-то очень похожее на пример 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/


вот небольшой пример того, что имеет 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/


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

вот exmaple его вывода:

+------+------+----+
|      |Sex   | Age|
+------+------+----+
|Moses |male  |4556|
+------+------+----+
|Jesus |male  |2016|
+------+------+----+
|Debora|female|3001|
+------+------+----+
|Bob   |male  |  25|
+------+------+----+

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

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

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