[英]Read word from a text file
這是我必須遵循的要求:
將有一個C樣式或C ++樣式字符串來保存單詞。 一個int來保存每個單詞的計數。 用於保存這兩者的結構或類。 此結構/類將插入到STL列表中。 您還需要一個C樣式或C ++樣式字符串來保存從文件中讀取的文本行。 您將根據assign spec中的單詞定義將此行解析為單詞。
第一部分似乎沒問題,但是在第二部分中,我仍然沒有明白有關讀取一條線然后將其解析為一個單詞的觀點。 它是否比使用文本文件直接讀取單詞更有效?
效率取決於單詞的定義(來自賦值規范):如果你需要不止一次地通過linem來確定單詞的開始/結束位置(即什么屬於單詞),它更多有效地將行保留在內存中,然后多次執行從磁盤讀取(盡管I / O緩存可以減少性能影響)。
即使沒有性能提升,這是一個家庭作業,我想你要這樣做來學習1)如何從文件中讀取字符串(行); 2)如何解析內存中的字符串。 為了實現這兩個目標,您有這個要求
使用fstream
從文件中讀取每行,然后通過對空間進行划分並直到loop
的行尾將其解析為單詞。
根據您的使用情況,逐行讀取文件會很有用。
首先在內存中讀取整個文件並在之后解析它不會最小化內存使用量。 程序運行所需的內存至少是文件的大小。 如果輸入文件與程序可用的內存相比較大,則無法分配足夠的內存來存儲整個文件(嘗試分配20GB的字符串以查看發生的情況)。
另一方面,如果逐行讀取,則一次只需要內存中一行的大小:您可以立即釋放為前一行分配的內存。
因此,如果符合以下條件,逐行解析很有用:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.