C++的输出/输入运算符可以连续输入/输出的原理

在C++中,通常会使用输出或者输入运算符进行连续输入、输出。

例如,

std::cin >> a >>b;

std::cout <<"变量a:" << a <<std::endl;

std::cout << "变量b:" << b << std::endl;

是不是感觉很神奇。通常,大家只这样使用,但个中原理呢?知道了其中原理,我们就可以大胆使用。

前提知识:C++的表达式产生一个计算结果,一个表达式由一个或者多个运算对象和一个运算符组成,计算结果返回某种类型的对象。

(1)输出运算符<<,接收2个运算对象,左侧的运算对象是一个ostream对象,右侧的运算符是要输出的对象,返回值是左侧的运算对象ostream对象;此时可以接受下一个输出。实际情况是:每次输出,将要输出的结果,写入ostream对象、输出,并返回该ostream对象,接收下一次的输出。例如:std::cout <<"变量a:" << a <<std::endl;

首先,字符串“变量a:”写入到std::cout对象输出,返回std::cout对象,相当于【std::cout <<"变量a:" << a <<std::endl; 】 变为了【std::cout << a <<std::endl; 】

其次,变量a写入到std::cout对象输出,返回std::cout对象,相当于【std::cout << a <<std::endl; 】 变为了【std::cout <<std::endl;】

最后,std::endl写入到std::cout对象输出,整个【std::cout <<"变量a:" << a <<std::endl;】运行结束。

(2)输入运算符>>,接收2个运算对象,左侧的运算对象是一个istream对象,右侧的运算符是要保存输入结果的对象,返回值是左侧的运算对象istream对象;此时可以接受下一个输入。例如,std::cin >> a >>b;

首先,istream对象std::cin从输入终端接收输入值,并将其存入变量a,并返回istream对象std::cin,相当于【std::cin >> a >>b;】变为【std::cin >>b;】

其次,istream对象std::cin从输入终端接收输入值,并将其存入变量b,并返回istream对象std::cin,相当于【std::cin >>b;】返回std::cin,整个表达式语句【std::cin >> a >>b;】执行完毕。

原文链接:,转发请注明来源!