為什麼C 中會把檔案操作抽象為fstream?

時間 2021-06-03 07:24:17

1樓:Diao Diao

如果樓主是要問為什麼C++要這麼做: 因為C++的fstream是繼承於C++標準的iostream,是對C++標準庫順理成章的"延續", 有利於標準化。

如果樓主是要問為什麼要抽想成乙個stream:我覺得一方面是習慣,另一方面stream的介面滿足絕大多數檔案操作需求。

如果樓主是要問為什麼要用fstream這個名字: 是個比喻吧, 像水流 ~~~ :)

2樓:

Linux 裝置分為字元(c)和塊(b)裝置兩種。tty 是 c 裝置,不能 seek,「流」是正確的抽象;C 的 stdin / stdout 操作介面大致就是喂這種用例設計的,C++ 順著一路抄下來了而已。

不使用 seek 基本上做不了多少有用的事情;seek 本身又不是乙個可以對映到「流」上去的操作。

所以……

When should I use mmap for file access?

對於嚴肅的檔案操作的場合,mmap 才是王道。fstream 什麼的……呵呵。

3樓:myd7349

引用《物件導向程式設計——C++語言描述》上的一段話:

「在C++中,程式的輸入被看作從鍵盤、磁碟檔案或其他輸入源輸入的一串連續的位元組流;程式的輸出被看作是輸出到顯示器、磁碟檔案或其他目標的一串連續的位元組流。因此C++輸入/輸出也被稱作輸入/輸出流。」

感覺本回答純屬文字遊戲。嗯。我純粹是打醬油的。

實不相瞞,年輕人,你這個問題提到的「流」讓我陷入了對時間、空間的深深思索中……

4樓:

檔案本身就是個抽象的概念.

既包括可隨機訪問的普通檔案,也包括串列埠這樣的順序訪問的檔案.

別的方式最典型的就是記憶體影射 mmap

5樓:邱昊宇

想想這兩種情況即可:

有些檔案在空間上太龐大,無法一次性全部載入進記憶體(如:無窮大的檔案)有些檔案在時間上不連續,無法一次性全部載入進記憶體(如:標準輸入、Socket)

p.s. 「時間上不連續」有點文不達意,可以理解為只有在未來才能得到完整的資料……

為什麼c 要「在標頭檔案中宣告,在原始檔中定義」?

Coder 為什麼不推薦在標頭檔案中定義函式或者變數呢,只建議在標頭檔案中宣告變數和函式.要記住,每當你用乙個 include的時候,你就是把那個標頭檔案的內容搬到 include的位置 pragma once的作用是 在同乙個檔案中多次include同乙個標頭檔案的時候,保證該標頭檔案內容只被替換...

C語言,嘗試fopen 讀寫檔案為什麼會引發下面的「應用程式錯誤」?

Hippop 給樓主推薦乙個好玩的,FILE f fopen C ab fseek f,0,0 手動打碼 w h i l e 1 f w r i t e x00 x00 x00 x00 1,4,f 分割線 阿秋 你試試這個 include int main FILE fp char c fp fop...

為什麼很多人會把boss誤寫為boos?

滌塵 不知道題主是不是全是在遊戲圈裡看到boos這個詞。其實,最早的時候玩家間規定遊戲裡的大怪叫boos,為了和現實中的boss區分開,就和陝西的英文名是shaanxi和山西shanxi區分開差不多道理。不過畢竟boos是個錯誤的單詞,所以知道的人越來越少了。 紅燒橘子皮 就和漢字裡的形近字容易寫成...