我正在做的是在主開始時使用fstream打開我的文件,並在最後關閉它。在我寫作「Hello World」之間,然後閱讀我寫的內容,但結果總是被人嘲笑,而不是「Hello World」。我確實做了一個角色,但沒有幫助。任何方式我可以做到這一點?同時讀取/寫入
同時讀取/寫入
回答
當您從閱讀轉爲寫作或反之時,您需要設置一個fseek調用。 (當然,你也需要fopen
爲"r+"
之類的,所以讀寫都是允許的,但我想你是已經知道了 - 尋求在閱讀和寫作之間切換的需要是一個鮮爲人知的事實)。
作爲this page所說的那樣,
對於模式,其中讀取和 寫入(或附加)被允許 (那些包括「+」符號),則 流應該被刷新(fflush )或 重新定位(FSEEK,fsetpos,倒帶) 任一隨後的寫入操作的讀出操作 或 寫入操作之後是 讀取操作之間。
fseek和fstream?我不這麼認爲。這個問題被標記爲C++而不是C,所以C++的答案會更合適。 – camh 2010-09-13 04:30:25
@camh,在我的回答中,我從「cplusplus.com」引用了大量的內容:這不是我的錯(當然也不是'cplusplus.com'的人;-) C++將(C的一個版本)合併爲一個子集,因此這個答案工作得很好(而@麥克的回答指出,用'std :: fstream'做這件事不是那麼容易)。如果你認爲有更好的方法來做到這一點(使用'std :: fstream'和w/o'fopen'),爲什麼不把它發佈呢? – 2010-09-13 05:04:27
如果我認爲你的答案有問題,我會對此做出評論,就像我所做的那樣。我不需要張貼我自己的答案參與。你不能混用iostream和stdio,所以你的回答最好是不相關的(stdio與iostreams的問題無關),最壞的情況是錯誤的。 C++包含C子集並不意味着在純C++程序中使用該子集是一個好主意。不是異常安全的(除非你編寫自己的包裝,否則不會自動關閉已打開的文件)足以讓我不鼓勵在純C++代碼中使用此C子集。 – camh 2010-09-13 07:18:45
我想如果這個工程,逗樂,因爲我總是要打開一個文件兩次做到這一點:一次讀取和一次寫。即使那樣,我也必須寫出整個文件並關閉它(刷新操作系統緩衝區),然後才能確定我能讀取整個文件,而不是早期的EOF。
時下,因爲我使用Unix風格的操作系統,我只會使用pipe()
函數。不知道這是否可以在Windows中使用(因爲很多不如文件上的select()
)。
確保你正在尋找的文件的開頭讀,像這樣前:
fileFStream.seekg(0, ios_base::beg);
如果不工作,發佈您的代碼。
- 1. 同時讀取和寫入變量
- 2. 同時讀取和寫入文件
- 3. WebGL紋理同時讀取/寫入
- 4. boost :: tcp :: iostream同時讀取和寫入
- 5. 套接字讀取和寫入同時
- 6. C:同時讀取和寫入文件
- 7. 同時讀取/寫入線程
- 8. 同時讀取和寫入java
- 9. 同時讀取和寫入python文件
- 10. 同時讀取和寫入寄存器
- 11. Linux - 同時從文件讀取/寫入
- 12. 同時讀取和寫入文件?
- 13. 可以同時寫入/讀取同一個數據流嗎?
- 14. 同時寫入和讀取同一文件(磁盤異步?)
- 15. android java從不同的線程同時讀取/寫入textview
- 16. 在讀取超時時寫入頻道
- 17. 讀取和寫入同一個文件
- 18. 同步串行端口讀取/寫入
- 19. MYSQL讀取和寫入不同表格
- 20. Node.js Serialport同步寫入讀取
- 21. 寫入和讀取同一個文件
- 22. 如何同步讀取/寫入流?
- 23. Redis讀取/寫入
- 24. SQLite同時讀寫
- 25. 同時讀寫matlab
- 26. 同時讀取和寫入數據到sql服務器
- 27. windows 8 C#同時讀取和寫入文件
- 28. 同時讀取和寫入向量導致異常
- 29. 可以在兩個Python程序寫入和讀取的同時
- 30. 同時在NDK中寫入和讀取文件android
您是否檢查讀取操作是否成功?你如何閱讀? – 2010-09-13 04:12:53
發佈您使用的代碼。 – 2010-09-13 04:12:59