将cout格式与表格列对齐

时间:2008-11-09 01:40:21

标签: c++ string format

我很确定这是一个关于格式化的简单问题,但这就是我想要实现的目标:

我想使用cout将数据输出到屏幕上。我想以表格格式输出。我的意思是列和行应该正确对齐。例如:

Test                 1
Test2                2
Iamlongverylongblah  2
Etc                  1

我只关心单独的行,所以我现在输出的行(不工作)是

cout << var1 << "\t\t" << var2 << endl;

这给了我类似的东西:

Test                 1
Test2                  2
Iamlongverylongblah         2
Etc                  1

3 个答案:

答案 0 :(得分:51)

setw

#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)

您必须在第一列中找到最长字符串的长度。然后,您需要在字段的第一列中输出每个字符串,其长度是该最长字符串的长度。这必然意味着在你阅读每一个字符串之前你不能写任何东西。