32

我很确定这是一个关于格式化的简单问题,但这是我想要完成的:

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

Test                 1
Test2                2
Iamlongverylongblah  2
Etc                  1

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

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

这给了我类似的东西:

Test                 1
Test2                  2
Iamlongverylongblah         2
Etc                  1
4

4 回答 4

56

设置_

#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;
}
于 2008-11-09T01:51:13.790 回答
10

我建议使用Boost Format。使用这样的东西:

cout << format("%|1$30| %2%") % var1 % var2;
于 2008-11-09T01:49:19.377 回答
2

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

于 2008-11-09T01:51:32.587 回答
-1

你可以用

string str = "somthing";
printf ("%10s",str);
printf ("%10s\n",str);
printf ("%10s",str);
printf ("%10s\n",str);
于 2013-12-15T16:46:13.660 回答