c 中istream型別到bool型別的隱式轉換

2022-05-03 20:09:14 字數 380 閱讀 6571

事情的起因是見到了這種用法:

while(cin>>m>>n&&m&&n)

現在分析一下,cin>>m>>n返回的是乙個對istream型別的引用,然後這個返回值又與m做&&運算。已知這種寫法是合法的。

可能有兩種情況:(1)&&運算子被過載,允許接收istream型別的值。

(2)istream類中有成員能將istream型別轉換為bool型別。

翻看手冊,發現是第二種情況。

有個繼承自ios類的成員函式 operator bool(c++11標準)。這個函式返回值的依據是 若failbit 或 badbit 標誌位有乙個被設定就返回false。

所以正常情況 istream 轉換為bool值是true,所以文章前面提到的用法是沒問題的。

C 中輸入流istream狀態管理3

在 c 中輸入流istream狀態管理2 中提到,rdstate 成員函式可以獲取流當前的狀態,即ios base iostate。ios base iostate對應的狀態有ios base goodbit ios base eofbit ios base badbit和ios base fail...

從C 中的引用型別到String

最近面試被問到乙個問題,在c 裡面string是值型別還是引用型別,當時想都沒想就說是引用型別。後來面試官又接著問為啥,我就給愣住了,隨口說了個可以為null就不會了。下來仔細想了想這個問題。首先,要說明string為什麼是引用型別,先來考慮下什麼是引用型別,什麼是值型別,以及他們的區別是什麼。在網...

python嵌入到C 中

在了解下面的函式之前有必要了解一下 pyobject 指標,python裡面幾乎所有的物件都是使用這個指標來指示的。py initialize py finalize 在呼叫任何python的c函式之前需要呼叫的函式,py initialize 是用來初始化python模組的,推測是載入初始化載入d...