C++ でテーブルを作成する

Aditya Raj 2023年10月12日
  1. C++ でテーブルを作成する関数
  2. C++ で適切に配置されたテーブルを作成する
  3. まとめ
C++ でテーブルを作成する

C++ では、iomanip ライブラリを使用してデータを表形式で表示できます。 また、テーブルにデータを出力するのに役立つ iomanip ライブラリのさまざまなメソッドについても学びます。

この記事では、C++ でテーブルの形式でデータを出力する方法について説明します。

C++ でテーブルを作成する関数

C++ でテーブルのデータを出力するには、列を同じ幅で出力し、iomanip ライブラリを使用する必要があります。 いずれかの列の値が列の幅よりも小さい場合、パディングを追加して幅を他の列と等しくする必要があります。

iomanip ライブラリは、プログラムの出力を操作するための多くのメソッドを提供します。 setfill() 関数と setw() 関数についてのみ学習します。それらはテーブル内のデータを出力するためにのみ必要なためです。

setw() 関数は、出力フィールドの幅を設定するために使用されます。 setw() 関数の構文は、setw(number) と記述されます。ここで、number は、出力フィールドの幅に設定される文字数を示します。

コード例:

#include <iomanip>
#include <iostream>
using namespace std;

int main() {
  cout << setw(10) << "Monday" << endl;
  cout << setw(10) << "Tuesday" << endl;
  cout << setw(10) << "Wednesday" << endl;
  return 0;
}

出力:

    Monday
   Tuesday
 Wednesday

MondayTuesday、および Wednesday という単語を出力する際に、幅を 10 として出力値に割り当てました。

Monday の場合、幅が 10 になるように 4つの空白スペースが追加され、Tuesday の場合は 3つの空白スペースが追加され、Wednesday の場合、1つの空白スペースが追加されます。

setfill() 関数は、塗りつぶし文字として使用されます。 setfill() 関数の構文は、setfill(char ch) のように記述されます。ここで、ch は、黒いスペースを埋める必要がある文字です。

コード例:

#include <iomanip>
#include <iostream>
using namespace std;

int main() {
  cout << setfill('#') << setw(10) << "Monday" << endl;
  cout << setfill('#') << setw(10) << "Tuesday" << endl;
  cout << setfill('#') << setw(10) << "Wednesday" << endl;
  return 0;
}

出力:

####Monday
###Tuesday
#Wednesday

10 として幅を割り当て、MondayTuesday、および Wednesday という単語を出力しました。 setfill() 関数がなければ、前の例で示したように、単語の出力長を 10 にするために出力に空白文字が含まれていたでしょう。

ただし、入力引数として文字 # を指定して setfill() メソッドを使用すると、出力のスペースが文字 # に置き換えられます。

Monday の場合、幅を 10 に等しくするために 4つの埋め込み文字 # が使用されます。Tuesday の場合は 3つの埋め込み文字が使用され、Wednesday の場合は 1つの埋め込み文字が使用されます。

フィル文字はデフォルトで左側に配置されますが、std::left を使用してフィル文字を右側に出力することもできます。 これは、出力値の右側に塗りつぶし文字が出力されている次の例で確認できます。

コード例:

#include <iomanip>
#include <iostream>
using namespace std;

int main() {
  cout << setfill('#') << left << setw(10) << "Monday" << endl;
  cout << setfill('#') << left << setw(10) << "Tuesday" << endl;
  cout << setfill('#') << left << setw(10) << "Wednesday" << endl;
  return 0;
}

出力:

Monday####
Tuesday###
Wednesday#

C++ で適切に配置されたテーブルを作成する

C++ でテーブルを適切な配置で作成する例を見てみましょう。 以下の例では、C++ のテーブルに AgeBirthday を出力しています。

C++ の iomanip ライブラリの setw() 関数を使用して、エントリの幅を設定しました。

コード例:

#include <iomanip>
#include <iostream>
using namespace std;

class Birthday {
 public:
  string studentName;
  int studentAge;
  int birthDay;
  string birthMonth;
  string birthYear;

  Birthday(string name, int age, int day, string month, string year) {
    studentName = name;
    studentAge = age;
    birthDay = day;
    birthMonth = month;
    birthYear = year;
  }
};

int main() {
  Birthday recordArray[5] = {Birthday("Naman", 20, 13, "January", "1999"),
                             Birthday("Divesh", 23, 04, "May", "1996"),
                             Birthday("Nitish", 19, 29, "December", "2000"),
                             Birthday("Mandeep", 25, 19, "March", "1998"),
                             Birthday("Aman", 20, 29, "April", "1989")};

  cout << left << setw(10) << "Name" << left << setw(5) << "Age" << left
       << setw(8) << "Day" << left << setw(10) << "Month" << left << setw(4)
       << "Year" << endl;

  for (int i = 0; i <= 4; i++) {
    cout << left << setw(10) << recordArray[i].studentName << left << setw(5)
         << recordArray[i].studentAge << left << setw(8)
         << recordArray[i].birthDay << left << setw(10)
         << recordArray[i].birthMonth << left << setw(4)
         << recordArray[i].birthYear << endl;
  }
  return 0;
}

出力:

Name      Age  Day     Month     Year
Naman     20   13      January   1999
Divesh    23   4       May       1996
Nitish    19   29      December  2000
Mandeep   25   19      March     1998
Aman      20   29      April     1989

各列に異なる幅を設定しました。 各列の幅は、コンテンツの幅よりも大きくなっています。

出力の幅が列の幅よりも小さい場合、コンテンツはオーバーフローします。 以下の例を考えてみましょう。

コード例:

#include <iomanip>
#include <iostream>
using namespace std;

int main() {
  cout << left << setw(1) << "January" << endl;
  return 0;
}

出力:

January

幅のサイズが出力の長さよりも小さい数値に設定されている場合でも、出力はテーブルに出力されます。 この場合、出力の長さは出力値の長さと等しくなります。

まとめ

C++ で iomanip ライブラリを使用してテーブルを作成する方法について説明しました。 setw() 関数と iomanip ライブラリの setfill() 関数の構文について学びました。

また、これらの関数を使用して C++ でテーブルを作成することについても説明しました。 この例では、setw() メソッドを使用して列幅を決定し、setfill() 関数を使用してテーブルをさまざまな文字でフォーマットしています。

著者: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

関連記事 - C++ Table