2009-11-25 51 views
0

我一直在研究Doom 3 SDK代碼,特別是他們的文件系統實現。實現文件對象(C++)

系統通過傳遞'idFile'對象(我至少可以訪問的代碼),我注意到這個類提供了讀取寫入方法以及維護一個FILE *成員。

這向我建議FILE *在讀取和寫入訪問處於「打開」狀態時,在調用Read()和Write()之間關閉並重新打開文件(具有適當的訪問權限)。
這聽起來沒錯嗎,還是我簡化了它?
如果情況並非如此(我認爲哪些部分不是 - 由於速度等原因),有沒有人有任何建議,他們將如何實現這個優雅的界面?

請記住,我對C++和stdio都很新穎(我很確定iD支持)。

回答

1

您可以在讀寫模式下打開FILE *。

如果你這樣做,你應該在閱讀和寫作之間切換時刷新並尋找已知的位置,但不必重新打開文件。

0

沒有看過Doom代碼(我猜你可以在創建對象時指定一個模式),你可以使用freopen()重新打開一個文件(如果需要,可以在不同的模式下),而不需要先關閉它。

+0

確定 - 如果我已經閱讀了正確的文件「最初以模式」r「打開的流只能用相同的模式重新打開。」在使用這種方法讀取()後,您將無法將文件寫入()到文件中? – 2009-11-25 14:35:12