2010-07-30 72 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>>