質問

これはフォーマットに関する単純な質問であると確信していますが、私が達成したいことは次のとおりです。

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

Test                 1
Test2                2
Iamlongverylongblah  2
Etc                  1

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

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

次のようになります:

Test                 1
Test2                  2
Iamlongverylongblah         2
Etc                  1
役に立ちましたか?

解決

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;
}

他のヒント

ブースト形式を使用することをお勧めします。次のようなものを使用します。

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

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

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

string str = "somthing";
printf ("%10s",str);
printf ("%10s\n",str);
printf ("%10s",str);
printf ("%10s\n",str);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top