PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   請問C++的開啟檔案 (https://www.pcdvd.com.tw/showthread.php?t=527547)

沐風之羽 2005-08-21 08:55 PM

請問C++的開啟檔案
 
書本上面寫著...
---
ifstream 輸入物件; //建立輸入檔案物件
ofstream 輸出物件; //建立輸出檔案物件
fstream 輸出入物件; //建立輸入輸出檔案物件
---
我有個疑點, 為什麼建立文字檔還要分輸入/ 輸出/ 輸入輸出三種類型呢?
:(

horseboa 2005-08-21 09:45 PM

不會... :ase
去問學校老師最快...

capitalm 2005-08-21 10:02 PM

引用:
作者沐風之羽
書本上面寫著...
---
ifstream 輸入物件; //建立輸入檔案物件
ofstream 輸出物件; //建立輸出檔案物件
fstream 輸出入物件; //建立輸入輸出檔案物件
---
我有個疑點, 為什麼建立文字檔還要分輸入/ 輸出/ 輸入輸出三種類型呢?
:(


看一下
http://www.cplusplus.com/ref/iostream/fstream/
http://www.cplusplus.com/ref/iostream/ofstream/
http://www.cplusplus.com/ref/iostream/ifstream/

他們繼承的來源不同

小貓貓 2005-08-21 10:07 PM

引用:
作者沐風之羽
書本上面寫著...
---
ifstream 輸入物件; //建立輸入檔案物件
ofstream 輸出物件; //建立輸出檔案物件
fstream 輸出入物件; //建立輸入輸出檔案物件
---
我有個疑點, 為什麼建立文字檔還要分輸入/ 輸出/ 輸入輸出三種類型呢?
:(


為啥麼喔, 我覺得是針對細項去分而已, 需要用到輸入時就只是載入ifstream,不用載入其他的標頭檔,省空間.
這三個的父類別都是ios, 通常我們用的時候都直接全部載入, 一般的x86機器可能沒有感覺檔案差多少, 但是對於一些小型的控制器(20Mhz或是40Mhz, 記憶體定址有限的硬體), 能省就省. 以上如果有錯請指正.

harrisonlin 2005-08-21 10:49 PM

端看你對這個"文字檔"的用途在哪。

例如一般寫入 log,只需要以寫入方式開啟,那麼使用 ofstream class 就好;單純讀取 log 檔,只需使用 ifstream class 就好;某些特殊的情況下,必須要同時讀檔又寫檔,例如我想要記算某個 log 檔有幾行記錄,並且在這個檔案的最後面寫入共有幾行的資訊,這時候就要用到 fstream class。

樓上的小貓貓,載入"多餘"的 header file 不會讓編譯後的二進位檔大小增加,只會增加編譯時間而已。既然二進位檔的大小不會增加,就不會影響執行效率。

而且, ifstream, ofstream, fstream,全都是定義在 fstream 這個標準 C++ 函式庫所規範的標頭檔裡。

小貓貓 2005-08-21 11:24 PM

引用:
作者harrisonlin
端看你對這個"文字檔"的用途在哪。

例如一般寫入 log,只需要以寫入方式開啟,那麼使用 ofstream class 就好;單純讀取 log 檔,只需使用 ifstream class 就好;某些特殊的情況下,必須要同時讀檔又寫檔,例如我想要記算某個 log 檔有幾行記錄,並且在這個檔案的最後面寫入共有幾行的資訊,這時候就要用到 fstream class。

樓上的小貓貓,載入"多餘"的 header file 不會讓編譯後的二進位檔大小增加,只會增加編譯時間而已。既然二進位檔的大小不會增加,就不會影響執行效率。

而且, ifstream, ofstream, fstream,全都是定義在 fstream 這個標準 C++ 函式庫所規範的標頭檔裡。

多謝 harrisonlin 的指正.


所有的時間均為GMT +8。 現在的時間是11:03 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。