簡體   English   中英

在C ++中不使用getline()讀取文本文件

[英]Reading a text file without using getline() in C++

據我了解,為了分析文本文件,首選方法是逐行分析文本文件,這既簡單又高效。

但是,當我們處理一個大文件且所有文本都在一行中時,getline()函數絕對根本不會高效。 我想知道是否還有其他有效的方法來分析這個大文件?

我唯一要記住的是將這行大行存儲到一個字符串變量中,然后將其剪切為單字形式。 但這聽起來仍然根本沒有效率。

請幫忙。 謝謝!

您可以使用std::istream::get(char *, std::streamsize)將文件的大塊讀取到適當大的緩沖區中,然后逐塊處理文件。

或者,也可以使用特定於操作系統的方式。 在Linux上,可以使用文件的只讀mmap()進行瀏覽,而不必大驚小怪。

getline基本上只是處理換行符或其他字符的快捷方式! 因此,如果文件中有一些定界符(例如,分號),則可以使用

std::getline(fileStream, stringToSave, ';');

至於性能-您只需要嘗試適合您的情況即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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