用于表格输出的库,可自动处理列宽
A library for tabular output with automatic handling of column width?
是否存在可用于自动处理表格输出中列宽的C++库?
我设想该库将提供一个表示逻辑(即不在屏幕上(表的tout
对象,因此我将能够编写:
tout << a << b << std::endl;
a
和 b
将放入连续的列中,std::endl
将结束一行。tout
对象将跟踪每列中最宽的条目,并根据需要放大列宽。然后我将能够将整个事情发送到真正的输出流:
std::cout << tout;
在我看来,这是一个好主意,我认为这样的事情一定已经实施,但我找不到任何类似的东西......
对于
解决方案来说,这怎么样:创建一个带有重载<<
运算符的类,该运算符接受任何类型的参数(通过使用模板(并将其放入集合中(如 Boost 任何节点的std::list
(。
然后创建一个重载operator<<(std::ostream&, const your_special_class&)
,该调用类中的函数以将格式设置为列并返回一个字符串。
格式化功能可以获取终端的宽度,内部集合中的项目数,并计算每列的宽度。然后,它将std::ostringstream
与std::setw
操纵器一起使用来格式化每列。它返回列格式的字符串。
对于额外的分数,您可以通过对每列进行自动换行来设置格式设置功能以创建多行列。这需要更多的工作,因为您需要将包装输出的每一行"打印"为实际输出中的一行。
相关文章:
- 警告处理为错误这里有什么问题
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用流处理接收到的数据
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 基于多个条件处理地图中的所有元素
- 如何用数字处理log(0)
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 错误处理.将系统错误代码映射到泛型
- 从文本文件中读取时钟时间和事件时间并进行处理
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 用于矢量处理的多个线程
- 对字符串进行排序时,在c++中处理sort()
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 处理除以零会导致<csignal>意外行为
- 是否可以在c++中处理字符串流中的各个元素
- 用于表格输出的库,可自动处理列宽