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 に答える