【C++】实现根据输入个数以及内容输出表格【类,<<重载,动态数组】

本文介绍了如何在C++中使用友元函数重载操作符<<以实现people类的格式化输出,并讨论了为什么不能直接创建people类数组,以及在main函数中如何处理用户输入并显示人员信息。
摘要由CSDN通过智能技术生成

思路:

1.用一个类记录成员信息

2.对操作符<<以非成员函数的形式重载,但是为了能访问类的私有成员,将其声明为友元函数,这里的重载实现了更方便的格式化输出

3.不能声明一个类型为people类的数组,因为这里定义了构造函数,就不会调用默认构造函数,而没有参数不能构造一个类,我们知道定义一个数组,在没有赋初值时,其中是杂乱的变量,对普通类型不会,对类来说这样的不确定性会报错

#include<iostream>
#include<iomanip>
#include<string>
#include<vector>
using namespace std;
class people {
private:
	int number;
	string name;
	int age;
public:
	people(int n, string name, int a);
	friend ostream& operator<<(ostream& out, const people& c);
};
people::people(int n, string name, int a) {
	this->number = n;
	this->name = name;
	this->age = a;
}
ostream& operator<<(ostream& out, const people& c) {
	out << setw(8) << c.number << setw(8) << c.name << setw(8) << c.age << endl;
	return out;
}

int main() {
	vector<people>a;
	int n;
	cin >> n;
	cout << "请分别输入" << n << "个人员的编号,姓名,年龄:" << endl;
	for (int i = 0; i < n; i++) {
		int number, age;
		string name;
		cin >> number >> name >> age;
		a.push_back(people(number, name, age));
	}
	cout << "--------------------------" << endl;
	cout << setw(8) << "number" << setw(8) << "name" << setw(8) << "age" << endl;
	cout << "--------------------------" << endl;
	for (int i = 0; i < n; i++) {
		cout << a[i];
	}
	cout << "--------------------------" << endl;
	return 0;
}
// 运行
3
请分别输入3个人员的编号,姓名,年龄:
1 zhang 18
2 yi 19
3 xing 20
--------------------------
  number    name     age
--------------------------
       1   zhang      18
       2      yi      19
       3    xing      20
--------------------------
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值