我很确定这是一个关于格式化的简单问题,但这就是我想要实现的目标:
我想使用cout
将数据输出到屏幕上。我想以表格格式输出。我的意思是列和行应该正确对齐。例如:
Test 1
Test2 2
Iamlongverylongblah 2
Etc 1
我只关心单独的行,所以我现在输出的行(不工作)是
cout << var1 << "\t\t" << var2 << endl;
这给了我类似的东西:
Test 1
Test2 2
Iamlongverylongblah 2
Etc 1
答案 0 :(得分:51)
#include <iostream>
#include <iomanip>
using namespace std;
int main () {
cout << setw(21) << left << "Test" << 1 << endl;
cout << setw(21) << left << "Test2" << 2 << endl;
cout << setw(21) << left << "Iamlongverylongblah" << 2 << endl;
cout << setw(21) << left << "Etc" << 1 << endl;
return 0;
}
答案 1 :(得分:10)
我建议使用Boost Format。使用这样的东西:
cout << format("%|1$30| %2%") % var1 % var2;
答案 2 :(得分:2)
您必须在第一列中找到最长字符串的长度。然后,您需要在字段的第一列中输出每个字符串,其长度是该最长字符串的长度。这必然意味着在你阅读每一个字符串之前你不能写任何东西。