[問題] ifstream is_open() 的實作碼原理

看板C_and_CPP作者 (看不到夢想的我)時間12年前 (2013/08/19 06:03), 編輯推噓3(308)
留言11則, 5人參與, 最新討論串1/1
使用的是Visual C++。 我在念有關檔案輸入與輸出的章節時,特別打該FSTREAM.H的header file來看,有關判斷 檔案是否開啟成功的函數: is_open 看到: 在filebuf class內: int is_open() const { return (x_fd!=-1); } 在main()函數內看到: int is_open() const { return rdbuf()->is_open(); } 因為太資淺XD,想問幾個基本的 1. 函數定義在class內,依照函數的定義方法,怎麼會在is_open和{}間有個const? 2. return (x_fd!=-1) 感覺是邏輯判斷,怎麼回傳值型態會是int? 3. return rdbuf()->is_open() 是什麼意思呢? 我只學過this-> 感謝大家!! Thank you -- ╭──╮ q ˙ . ╭════╮ ◤◥◤◥ 此路不通 ││ ˙在 一 起 ╰═ ╤ ═╯ ◣ ◢ ﹕. ˙ ‧ ‧ ███ ψsleeeve ███ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.181.219.30

08/19 14:29, , 1F
1.建議看書XD 2.還是建議看書XD 3.跟前面一樣建議看書XD
08/19 14:29, 1F

08/19 14:35, , 2F
樓上的意思是請把其他章節都看完再去找程式碼來看
08/19 14:35, 2F

08/19 14:57, , 3F
1. 代表這個函數不會改到member的資料 加了const以後才
08/19 14:57, 3F

08/19 14:58, , 4F
能存取 const type data member
08/19 14:58, 4F

08/19 14:58, , 5F
2. x_fd!=-1回傳可能是true or false 可以轉成int 會是
08/19 14:58, 5F

08/19 14:58, , 6F
0或是1
08/19 14:58, 6F

08/19 14:59, , 7F
3. 一個物件的pointer取用物件的member function的方式
08/19 14:59, 7F

08/19 15:00, , 8F
是採用箭頭 所以rdbuf()會回傳一個pointer
08/19 15:00, 8F

08/19 15:00, , 9F
this 也是一種pointer
08/19 15:00, 9F

08/19 15:54, , 10F
感謝大家!! 已正在消化ing XD
08/19 15:54, 10F

08/19 23:22, , 11F
2點的-1也許跟開檔回傳值有關,在錯誤時回傳-1
08/19 23:22, 11F
文章代碼(AID): #1I4RL9ev (C_and_CPP)