Format output in a table, C++

2020-02-05 08:47发布

How can I output data to the console in a table in C++? There's a question for this in C#, but I need it in C++.

This, except in C++: How To: Best way to draw table in console app (C#)

4条回答
三岁会撩人
2楼-- · 2020-02-05 09:11

Here's a small sample of what iomanip has:

#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;
}

There are other things you can do as well, like setting the precision of floating-point numbers, changing the character used as padding when using setw, outputting numbers in something other than base 10, and so forth.

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

查看更多
We Are One
3楼-- · 2020-02-05 09:16

Check the column value length and also keep the length of value in mind to format.

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

See how MySQL shell interface was designed, it will give you a good idea.

查看更多
在下西门庆
4楼-- · 2020-02-05 09:18

I couldn't find something I liked, so I made one. Find it at https://github.com/haarcuba/text-table

Here's an exmaple of its output:

+------+------+----+
|      |Sex   | Age|
+------+------+----+
|Moses |male  |4556|
+------+------+----+
|Jesus |male  |2016|
+------+------+----+
|Debora|female|3001|
+------+------+----+
|Bob   |male  |  25|
+------+------+----+
查看更多
forever°为你锁心
5楼-- · 2020-02-05 09:21

Can't you do something very similar to the C# example of:

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

Like:

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

Here's a reference I used to make this: http://www.cplusplus.com/reference/clibrary/cstdio/printf/

查看更多
登录 后发表回答