web-dev-qa-db-ja.com

テーブルの列としてcout形式を揃える

これは書式設定に関する簡単な質問であると確信していますが、私が達成したいことは次のとおりです:

coutを使用して画面にデータを出力したい。これを表形式で出力したい。これが意味するのは、列と行が適切に配置されることです。例:

Test                 1
Test2                2
Iamlongverylongblah  2
Etc                  1

私は個々の行のみに関心があるので、現在出力する(動作していない)行は

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

それは私に次のようなものを与えます:

Test                 1
Test2                  2
Iamlongverylongblah         2
Etc                  1
29
BobS

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;
}
51
Eugene Yokota

Boost Format を使用することをお勧めします。次のようなものを使用します。

cout << format("%|1$30| %2%") % var1 % var2;
10
Leon Timmermans

最初の列で最も長い文字列の長さを見つける必要があります。次に、フィールドの最初の列の各文字列を、その最長文字列の長さで出力する必要があります。これは必然的に、すべての文字列を読み取るまで何も書き込めないことを意味します。

2
sgm

あなたはそれをすることができます

string str = "somthing";
printf ("%10s",str);
printf ("%10s\n",str);
printf ("%10s",str);
printf ("%10s\n",str);
0
avishayhajbi