我很确定这是一个关于格式的简单问题,但这是我想要完成的:
我想使用cout
将数据输出到屏幕上。我想以表格格式输出。我的意思是列和行应该正确对齐。示例:
Test 1
Test2 2
Iamlongverylongblah 2
Etc 1
我只关心个别行,所以我现在要输出的行(不工作)是cout << var1 << "\t\t" << var2 << endl;
这给了我这样的东西:
Test 1
Test2 2
Iamlongverylongblah 2
Etc 1
5条答案
按热度按时间rt4zxlrg1#
setw .
ttygqcqt2#
我建议使用Boost Format。使用类似这样的代码:
jvidinwx3#
你必须找到第一列中最长的字符串的长度。然后你需要输出第一列中的每个字符串的长度为最长字符串的长度。这必然意味着你不能写任何东西,直到你读过每个字符串。
muk1a3rh4#
您可能需要使用
std::format
使用对齐语法
"{:<30} | {:<30}\n"
。这使您可以使用具有特定宽度的对齐来格式化文本。要格式化一个表,你可以在std:string table_rows后面加上一个字符串,然后用对齐和宽度来格式化元素,如下所示:
table_rows += format("{:<32} | {:<30}\n", str_col_1, str_col_2);
对于调试,一些填充字符可能会很方便,您可以像这样设置:
format("{:*<32} | {:+<30}\n" ...
.如果您确实需要使用动态宽度,那么请确定最长的“str_col_1”并将其用作另一个参数来格式化:
std::format("{:<{}}", "left aligned", 30);
示例:
输出:
参考:
https://en.cppreference.com/w/cpp/utility/format/formatterhttps://fmt.dev/latest/syntax.html
9lowa7mx5#
你可以用