簡體   English   中英

從文本文件中讀取單詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM