Aplicativos TUI(Terminal User Interface) estão crescendo dia após dia. E para você exibir dados em tabela no terminal com cores e outros recursos, para desenvolvedores C++ há mais uma biblioteca muito simples de usar: Tabulate .
Para usar Tabulate em seus aplicativos, basta instalá-la no seu sistema e para isso você precisará das seguintes dependências:
Geralmente programadores C++ já possuem todas elas instaladas, mas por via das dúvidas… 😃
Após isso é só clonar e instalar com os seguintes comandos:
git clone https://github.com/p-ranav/tabulate
cd tabulate
cmake .
sudo make install
Existem diversas formas de aplicar o Tabulate no seu código, no entanto, a forma mais básica seria:
#include <tabulate/table.hpp>
using namespace tabulate;
Table table;
Nesse exemplo básico imprimimos duas células com larguras predefinidas de acordo como desejar:
vim main.cpp
#include <tabulate/table.hpp>
using namespace tabulate;
int main() {
Table table;
table.add_row({"This paragraph contains a veryveryveryveryveryverylong word. The long word will "
"break and word wrap to the next line.",
"This paragraph \nhas embedded '\\n' \ncharacters and\n will break\n exactly "
"where\n you want it\n to\n break."});
table[0][0].format().width(20);
table[0][1].format().width(50);
std::cout << table << std::endl;
}
Para compilar não precisa de nenhuma flag adicional, exemplo:
g++ main.cpp
./a.out
Possível saída:
+--------------------+--------------------------------------------------+
| This paragraph | This paragraph |
| contains a | has embedded '\n' |
| veryveryveryveryv- | characters and |
| eryverylong word. | will break |
| The long word will | exactly where |
| break and word | you want it |
| wrap to the next | to |
| line. | break. |
+--------------------+--------------------------------------------------+
Note que para imprir a tabela você deve usar o std::cout << nome_da_tabela << '\n';
. E para adicionar recursos, formatação, cores e outros você pode fazer união na instância da sua classe, por exemplo, adicionar cor seria : table[0][0].format().font_color(Color::yellow);
, nesse caso de acordo com o exemplo acima o [0][0]
indica que a saída da célula à esquerda terá agora a cor amarela .
Para um exemplo mais detalhado você pode usar o diretório samples/ , exemplo:
g++ tabulate/samples/summary.cpp
./a.out
A possível saída será:
Se quiser desinstalar o Tabulate, rode:
sudo rm -rf /usr/local/lib64/cmake/tabulate /usr/local/include/tabulate
Para mais exemplos e informações acesse o repositório oficial .