浅谈C++输入输出流及其重载

2 篇文章 0 订阅

在学习C阶段我们写代码第一句就是#include<stdio.h>,这个到底是什么呢?

include 称为文件包含命令,stdio为standard input output的缩写,意为“标准输入输出”,是一个库,同样在C++中也存在这样一个标准输入输出库#include,我们称之为标准输入输出流类库。输入是将数据从输入设备传送到主机内存的过程,输出则是将数据从主机内存传送到输出设备的过程。数据像流水一样在主机和外存设备之间流动,我们形象称之为

重载输入/输出运算符
学习完C语言后,相信大家和我感受一样就是C语言语法要求很严格,用的时候规定很多。比如scanf和printf这两个函数在使用的时候如果我们制定的数据类型和输入的数据类型不一致的时候,就会出现很多错误。但是我们在使用C++的时候,我们不需要关心指定的输入数据类型,这得益于在C++的(I/O stream)中,对于>>和<<这两个运算符进行了重载。
重载机制是C++相对于C的很大一个改进,我们不需要想不同的名字来实现类似功能,并且我们可以通过重载">>“和”<<"实现用户自定义的输入输出。
我们来看一段代码

class Date
{
private:
	int month;
	int day;
	int year;
public:
	Date(int m = 1,int d = 20,int y = 2020)//构造函数
	{
		month = m;
		day = d;
		year = y;
	}
};

我们创建了个日期类,如果我们现在想直接打印出来这个类的成员这是做不到的。

Date dt(4,22,2020);
	cout << dt;

但是我们如果对<<进行了重载就可以

friend ostream &operator<<(ostream& os, Date date);
ostream &operator<<(ostream& os, Date date)
{
	os << "date.month:"<<date.month << "date.day"<<date.day << "date.year"<<date.year;
	return os;
}

为什么重载为这个类的友元函数?因为运算符<<左边的操作数不是Date类型的的对象,是一个流。
友元问题可以看博客https://blog.csdn.net/flf1234567898/article/details/104824230
重载之后我们就可以直接cout << dt;

再来看>>的重载

friend istream &operator>>(istream &in, Date &dt);
istream &operator>>(istream &in, Date &date)
{
	cout << "day month year" << endl;
	in >> date.day >> date.month >> date.year;
}

这样我们就能直接输入输出对象了

Date dt;//创建对象
	cin >> dt;
	cout << dt << endl;

这样我们就完成了这个Date类的输入输出重载,通过重载机制,我们可以大量减少代码量并且方便许多,聪明的你是否学会了呢?

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值