用于表格输出的库,可自动处理列宽

A library for tabular output with automatic handling of column width?

本文关键字:处理 表格 输出 用于      更新时间:2023-10-16

是否存在可用于自动处理表格输出中列宽的C++库?

我设想该库将提供一个表示逻辑(即不在屏幕上(表的tout对象,因此我将能够编写:

tout << a << b << std::endl;

ab 将放入连续的列中,std::endl将结束一行。tout对象将跟踪每列中最宽的条目,并根据需要放大列宽。然后我将能够将整个事情发送到真正的输出流:

std::cout << tout;

在我看来,这是一个好主意,我认为这样的事情一定已经实施,但我找不到任何类似的东西......

对于

解决方案来说,这怎么样:创建一个带有重载<<运算符的类,该运算符接受任何类型的参数(通过使用模板(并将其放入集合中(如 Boost 任何节点的std::list(。

然后创建一个重载operator<<(std::ostream&, const your_special_class&),该调用类中的函数以将格式设置为列并返回一个字符串。

格式化功能可以获取终端的宽度,内部集合中的项目数,并计算每列的宽度。然后,它将std::ostringstreamstd::setw操纵器一起使用来格式化每列。它返回列格式的字符串。

对于额外的分数,您可以通过对每列进行自动换行来设置格式设置功能以创建多行列。这需要更多的工作,因为您需要将包装输出的每一行"打印"为实际输出中的一行。