学科分类
目录
C++基础

提取运算符和插入运算符

C++在进行输入时需要从流中提取数据,在输出时需要向流中插入数据,提取和插入是通过在流类库中重载“>>”和“<<”运算符来实现的。接下来我们就来学习一下这两个运算符在流类中的重载。

1、“>>”运算符

提取运算符“>>”,又叫输入运算符,它的本义是右移操作,常用于位运算中。但C++的I/O流为了实现从流中提取数据,就在istream类中重载了“>>”运算符,istream类中共重载了“>>”运算符的18种形式,其成员函数原型如下所示:

istream& operator>>(char*);
inline istream& operator>>(unsigned char*);
inline istream& operator>>(signed char*);
istream& operator>>(char&);
inline istream& operator>>(unsigned char&);
inline istream& operator>>(signed char&);
istream& operator>>(short&);
istream& operator>>(unsigned short&);
istream& operator>>(int&);
istream& operator>>(unsigned int&);
istream& operator>>(long&);
istream& operator>>(unsigned long&);
istream& operator>>(float&);
istream& operator>>(double&);
istream& operator>>(long double&);
istream& operator>>(streambuf*);
inline istream& operator>>(istream&(_cdecl*_f)(istream&));
inline istream& operator>>(ios&(_cdecl*_f)(ios&));

这18个“>>”运算符的重载形式,按其功能可分为三大类,前15个运算符重载形式主要用于基本数据类型的输入;第16个运算符重载形式,可直接把提取的输入流数据插入到缓冲器buf中;最后两个运算符重载形式建立了支持istream环境和支持ios环境的用户自定义数据类型的输入。

istream类重载了“>>”运算符,那么istream类的对象cin便可直接调用该运算符进行一系列的输入操作,它从流中提取数据,将数据传送给cin对象,但“>>”运算符从流中提取数据时通常会跳过输入流中的空格、tab键、换行符等空白字符。

注意:重载的输入运算符“>>”均返回流类的istream的引用,这就使得“>>”运算符可连用。

2、“<<”运算符

插入运算符“<<”,又叫输出运算符,其本义是左移操作,也是常用在位运算中,C++I/O流为了实现将数据插入到流中,在ostream类中重载了“<<”运算符,ostream类中共重载了“<<”运算符的19种形式,其函数原型如下所示:

ostream& operator<<(const char*);
inline ostream& operator<<(const unsigned char*);
inline ostream& operator<<(const signed char*);
inline ostream& operator<<(char);
ostream& operator<<(unsigned char);
inline ostream& operator<<(signed char);
ostream& operator<<(short);
ostream& operator<<(unsigned short);
ostream& operator<<(int);
ostream& operator<<(unsigned int);
ostream& operator<<(long);
ostream& operator<<(unsigned long);
inline ostream& operator<<(float);
ostream& operator<<(double);
ostream& operator<<(long double);
ostream& operator<<(const void*);
ostream& operator<<(stream* buf);
inline ostream& operator<<(ostream&(_cdecl*_f)(ostream&));
inline ostream& operator<<(ios&(__cdecl*_f)(ios&));

这19个“<<”运算符的重载形式,按其功能可分为三大类,前16个运算符重载形式主要用于基本数据类型的输出;第17个运算符重载形式可直接从缓冲器buf中提取数据插入到输出流中;最后两个运算符重载形式建立了支持ostream环境和支持ios环境的用户自定义数据类型的输出。

ostream类重载了“<<”运算符,则ostream类的对象就可以调用“<<”运算符重载函数来完成一系列的输出操作。与“>>”运算符相比,“<<”运算符在输出数据时有很多格式控制细节,关于操作符的格式控制将在后面章节进行讲解。

点击此处
隐藏目录