在 C++ 中创建表
在C++中,可以使用 iomanip
库以表格的形式显示数据。 我们还将了解 iomanip
库有助于打印表中数据的各种方法。
在本文中,我们将讨论如何在 C++ 中以表格的形式打印数据。
在 C++ 中创建表的函数
在C++中,要打印表中的数据,我们需要打印等宽的列并使用iomanip库。 如果任何列中的值小于该列的宽度,我们需要添加填充以使宽度等于其他列。
iomanip
库提供了许多方法来操作程序的输出。 我们只会了解 setfill()
函数和 setw()
函数,因为它们只需要在表中打印数据。
setw()
函数用于设置输出字段的宽度。 setw()
函数的语法为 setw(number)
,其中 number 表示要在输出字段的宽度中设置的字符数。
示例代码:
#include <iostream>
#include <iomanip>
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。
如果是星期一,输出将添加 4 个空格以使宽度等于 10;如果是星期二,则添加 3 个空格;如果是星期三,则添加 1 个空格。
setfill()
函数用作填充字符。 setfill()
函数的语法为setfill(char ch),其中ch是需要填充黑色空格的字符。
示例代码:
#include <iostream>
#include <iomanip>
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()
方法并将字符 # 作为输入参数时,输出中的空格将被字符 # 替换。
对于星期一,使用 4 个填充字符 # 使宽度等于 10。对于星期二,使用 3 个填充字符,对于星期三,使用 1 个填充字符。
填充字符默认放置在左侧,但我们也可以使用 std::left
将填充字符打印在右侧。 您可以在以下示例中观察到这一点,其中填充字符打印在输出值的右侧。
示例代码:
#include <iostream>
#include <iomanip>
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++ 打印了表中的年龄和生日。
我们使用 C++ 中 iomanip 库的 setw()
函数来设置条目的宽度。
示例代码:
#include <iostream>
#include <iomanip>
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 <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << left << setw(1) << "January" << endl;
return 0;
}
输出:
January
即使宽度大小设置为小于输出长度的数字,输出也会打印到表中。 在这种情况下,输出长度将等于输出值的长度。
总结
我们已经讨论了使用 C++ 中的 iomanip 库制作表格。 我们学习了 iomanip 库的 setw() 函数和 setfill()
函数的语法。
我们还讨论了使用这些函数在 C++ 中制作表格。 在示例中,我们仅使用 setw()
方法来确定列宽,并使用 setfill()
函数用不同的字符格式化表格。
相关文章
Arduino 复位
发布时间:2024/03/13 浏览次数:315 分类:C++
-
可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。
Arduino 的字符转换为整型
发布时间:2024/03/13 浏览次数:181 分类:C++
-
可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。
Arduino 串口打印多个变量
发布时间:2024/03/13 浏览次数:381 分类:C++
-
可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。