2015-04-24 50 views

回答

1

有沒有比使用getline for m times和seekp更好的方法?

不是真的!在操作系統級別,行不是「特殊」的;它們只是由換行符分隔的文本文件的一部分。獲取文本文件的m的唯一方法是讀取所有文件,直到看到m - 1換行符。您的C++庫的getline()函數可能已經具有該操作的相當高效的實現,所以您最好使用它。

如果您的應用程序在單次運行期間需要多次查找大文件的特定行,那麼在啓動時將整個文件讀入數據結構可能是有意義的(例如,一組結構,每個結構代表單行文本);一旦你這樣做了,尋找一條特定的線就像數組查找一樣簡單。但是如果你只需要尋找一條特定的線路,那沒有必要。

對於大文件中的重複查找,更高效的內存方式可能​​是在遇到它時爲每個行號記錄文件偏移量,以便您可以輕鬆地返回給定行而不必從頭開始。但是,再次重申,只有在尋求重複多次時纔有必要。

相關問題