PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

回應
 
主題工具
沐風之羽
Basic Member
 

加入日期: Feb 2005
文章: 10
請問C++的開啟檔案

書本上面寫著...
---
ifstream 輸入物件; //建立輸入檔案物件
ofstream 輸出物件; //建立輸出檔案物件
fstream 輸出入物件; //建立輸入輸出檔案物件
---
我有個疑點, 為什麼建立文字檔還要分輸入/ 輸出/ 輸入輸出三種類型呢?
     
      
舊 2005-08-21, 08:55 PM #1
回應時引用此文章
沐風之羽離線中  
horseboa
*停權中*
 
horseboa的大頭照
 

加入日期: Aug 2005
您的住址: 誠徵女神的牧場
文章: 32
不會...
去問學校老師最快...
 
舊 2005-08-21, 09:45 PM #2
回應時引用此文章
horseboa離線中  
capitalm
Major Member
 
capitalm的大頭照
 

加入日期: Jun 2003
您的住址: where the light is
文章: 271
引用:
作者沐風之羽
書本上面寫著...
---
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:02 PM #3
回應時引用此文章
capitalm離線中  
小貓貓
Advance Member
 
小貓貓的大頭照
 

加入日期: Jun 2000
您的住址: 新北市的邊緣
文章: 452
引用:
作者沐風之羽
書本上面寫著...
---
ifstream 輸入物件; //建立輸入檔案物件
ofstream 輸出物件; //建立輸出檔案物件
fstream 輸出入物件; //建立輸入輸出檔案物件
---
我有個疑點, 為什麼建立文字檔還要分輸入/ 輸出/ 輸入輸出三種類型呢?


為啥麼喔, 我覺得是針對細項去分而已, 需要用到輸入時就只是載入ifstream,不用載入其他的標頭檔,省空間.
這三個的父類別都是ios, 通常我們用的時候都直接全部載入, 一般的x86機器可能沒有感覺檔案差多少, 但是對於一些小型的控制器(20Mhz或是40Mhz, 記憶體定址有限的硬體), 能省就省. 以上如果有錯請指正.
__________________
http://211.72.51.216:8080/
舊 2005-08-21, 10:07 PM #4
回應時引用此文章
小貓貓離線中  
harrisonlin
Advance Member
 
harrisonlin的大頭照
 

加入日期: Jun 2003
您的住址: Taipei
文章: 442
端看你對這個"文字檔"的用途在哪。

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

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

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

此文章於 2005-08-21 11:00 PM 被 harrisonlin 編輯.
舊 2005-08-21, 10:49 PM #5
回應時引用此文章
harrisonlin離線中  
小貓貓
Advance Member
 
小貓貓的大頭照
 

加入日期: Jun 2000
您的住址: 新北市的邊緣
文章: 452
引用:
作者harrisonlin
端看你對這個"文字檔"的用途在哪。

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

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

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

多謝 harrisonlin 的指正.
__________________
http://211.72.51.216:8080/
舊 2005-08-21, 11:24 PM #6
回應時引用此文章
小貓貓離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是04:32 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。