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
Monday
、Tuesday
、および 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
として幅を割り当て、Monday
、Tuesday
、および 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++ のテーブルに Age
と Birthday
を出力しています。
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 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