输入操作符重载(读文件)

本文介绍了如何在C++中通过重载输出操作符`<<`和输入操作符`>>`,实现在控制台和文件中无差别地读写Student对象。通过实例演示了如何读取文件内容并操作Student对象,展示了面向对象编程中此类操作符的重要应用。

如文章 C加加辅导袁老师:输出操作符重载 中描述的,输出操作符重载可以让类只实现一个函数,就可以无差别的输出类对象到控制台和文件。

同样的,从控制台或者文件输入类对象,也可以通过重载函数(输入操作符>>函数)来实现:

准备工作

为此,我们需要要准备一个文本文件students.txt。

并打开文本文件students.txt,往里面添加一行数据:

001 zhangsan 18 1995-09-08

程序逻辑

这个文件的内容会被我们的代码读取到。

读到文件的内容会被存到内存对象中。

我们接下来再把这个对象的成员数据打印到控制台。

完整程序

#include <iostream>
#include <fstream>
#include <string>

class Student
{
	friend std::ostream& operator<<(std::ostream& os, const Student& stu);
	//由于输入操作符函数会写(修改)对象的成员变量,所以不可以传const参数
	friend std::istream& operator>>(std::istream& os, Student& stu);
public:
	std::string m_id;//学号
	std::string m_name;//姓名
	int m_age;//年龄
	std::string m_date;//生日
};

std::ostream& operator<<(std::ostream& os, const Student& stu)
{
	os
		<< stu.m_id << " "
		<< stu.m_name << " "
		<< stu.m_age << " "
		<< stu.m_date;
	return os;
}
std::istream& operator>>(std::istream& is, Student& stu)
{
	is
		>> stu.m_id
		>> stu.m_name
		>> stu.m_age
		>> stu.m_date;
	return is;
}


int main(int argc, char** argv)
{
	//定义一个学生对象
	Student stu;
	std::ifstream fin("students.txt");
	if (!fin.is_open())
	{
		std::cout << "error! can not open file students.txt!" << std::endl;
		return -1;
	}
	fin >> stu;//从文件中读取信息赋值给stu
	//输出学生信息到文件
	std::cout << stu << std::endl;

	return 0;
}

文件students.txt的内容及程序输出:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++程序员Carea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值