2010-07-30 76 views
1

我开始学习cpp,并遇到cin作为从键盘接收输入的方式。 如果我明白了,cin是一个对象,而>>是为它定义的一个运算符。 按照其定义的方式,它是如何“知道”将单词彼此分开? 和另一件事, 是什么意思: 而(cin) 是cin一个bool类型?如果它返回true或false,这意味着什么?cin中的cin对象

+0

‘以它被定义,它是如何‘知道’要彼此分离文字的方式’? 目前还不清楚你在这里问什么。 – 2010-07-30 16:33:52

回答

3

呼叫:

cin >> var1 >> var2 >> var3; 

等同于:

cin >> var1; 
cin >> var2; 
cin >> var3; 

至于你的其他问题去,在C/C++任何返回NULL或零被视为假以if声明,否则视为真。

这就是为什么行:if(cin)的工作原理是检查是否有更多的数据在流中读取。 。

+2

你对'if(cin)'的描述并不完全是事实。人们不能把任何事情作为条件;必须是原始类型,否则“可转换”为一个。在std :: istream的情况下,其中std :: cin是一个实例,这是通过'operator void *()'完成的。当流是“好的”时,该函数返回非NULL,否则返回NULL。 – Lajnold 2010-07-30 17:15:22

1

当您使用输入流时,将定义特定字符以分隔输入中的项目。默认情况下,我相信这是空间角色。所以你可以输入以空格分隔的东西。

+0

+1,因为这解释了cin如何“知道”如何从输入流中分离单词。 – rturrado 2010-07-30 17:07:58

+1

实际上,它使用任何空格字符作为分隔符,其中包括空格,换行符,制表符等。但是当遇到分隔符时,它停止当前提取是正确的。 – Lajnold 2010-07-30 17:21:01

2

cin usage

“哪里STRM是IStream对象的标识符和可变是支持作为权参数的任何类型的对象也可以调用提取操作的连续为:

strm >> variable1 >> variable2 >> variable3; //... 

其是与从同一对象STRM执行连续萃取” - >从 operator>>