C++Primer难点解读
关于while(cin>>a);这个语句一开始看的时候是有一些疑问的。
一是对cin这个词不太了解,虽然书上解释了cin是输入流类型istream类型的对象,但是还是无法理解为什么从键盘输入的数据,为什么会存储在cin这个对象中去。
二是对>>这个运算符不太了解,书上的解释是>>是输入运算符,但是在书后面会介绍这个符号其实是右移运算符,它的作用是将化为二进制的数据右移。
而输入运算符>>是右移运算符的重载,也就是对这个>>符号的重新解释,让它拥有了从流读取数据的功能。
输入运算符(>>)的左侧对象必须是一个istream类型的对象,其右侧对象是存储数据的对象。
也就是将输入运算符左侧对象的数据存入右侧对象中。
综上所述,cin>>a的意思是
我们从键盘输入某个数据,这个数据会存入cin中。具体怎么存入的,我也不知道,可能是istream类规定了从外部设备输入的数据,都会存储在istream类的对象中。因为本人是个初学者,对C++的认识不够,只能按逻辑猜测。
然后是实现输入运算符的功能,将cin中的数据存入对象a中。
最后,回到我们标题的问题。
while(cin>>a)的解答。
while是一个循环,书上解释了当输入无效或者同时输入ctrl+z时会停止循环。
那么while(cin>>a)的意思就是除非终止循环,否则会一直将从键盘输入的值存入cin,再将cin的值存入a中。
相当于不断给a赋值,这个值就是我们从键盘输入的值。