我想從最後一行逐行讀一個文件。我看着像fgets這樣的C++函數,但是文件正在被反向讀取。從頭讀文件
從頭讀文件
回答
獲取如果文件大小爲小使用MSalters回答。
如果文件大小很大,則必須使用iostream::seekg
函數手動執行文件指針記錄。該算法會是這樣的:
- 找到文件大小
- 尋求補償所需
- 閱讀
- 尋求下一個偏移
'seekg'得到這種情況。 – user786653
確實,答案已更新。 – nathan
閱讀當然是前進的,而不是倒退(但最初從接近結束的某個點開始)。 @ Saurabh01:磁盤驅動器是單向的街道;驅動程序本身只能讀取一個方向。你必須在軟件中反向模擬閱讀。 –
不幸的是,我不知道的任何內置函數都會反向讀取。一個辦法是實現自己的算法如下圖所示使用fseek, fread and ftell
- 尋求到最後一個字符
- 開始從當前字符
- 搜索換行符如果不換行,添加字符的字符串
- 如果是換行符,則反轉字符串以獲得該行
- 尋找前一個字符
- 重複步驟2,3,4,5,直至到達文件開始位置。
您可以使用ftell, fseek
函數來達到最後一個字符,然後到達前一個字符。
感謝您的建議。我已經實現了這些選項,但正在尋找一個構建選項。 – CrazyC
- 1. curl:從文件中讀取頭文件
- 2. 解讀頭文件
- 3. PHP是否從頭文件讀取cookie?
- 4. 從頭開始讀取文件
- 5. 讀取/寫入文件頭
- 6. 使用java讀取文件頭文件
- 7. 讀取WAVE文件的標頭文件
- 8. 從.cpp文件中的頭文件讀取枚舉(C++)
- 9. 從頭讀取Python文件,這是一個大文件,無法讀入內存
- 10. 從文件讀
- 11. 如何使StreamReader從文本文件的開頭讀取
- 12. 從頭讀取多文件組件運行時行爲
- 13. 從頭編寫MIME頭文件
- 14. 無法正常讀取.bmp頭文件
- 15. AU文件的讀取頭 - C
- 16. 閱讀bmp文件頭大小
- 17. 如何用pycurl讀取頭文件
- 18. csv解析器讀取頭文件
- 19. 閱讀頭文件和餅乾
- 20. 函數讀取bmp文件標頭
- 21. 頭文件沒有被讀取?
- 22. VB.NET Visual Basic頭文件讀取器
- 23. 讀取以DOT開頭的文件名「」。「
- 24. 如何讀取多頭文件?
- 25. 讀取路由請求頭文件
- 26. 在C中讀取bmp頭文件
- 27. 用WINAPI讀取WMF頭文件
- 28. 如何閱讀TIFF頭文件c#?
- 29. 在C++中讀取PDB頭文件
- 30. 如何讀取swift頭文件
如果將整個文件加載到內存對您來說是合理的 - 您可以簡單地逐行讀取文件到某個std容器,然後反轉此容器。 – triclosan