在C 中高效地將文件內容讀取到字符串中
與Perl 等腳本語言類似,能夠檢索內容是有利的整個檔案並將其儲存在C 中的單一變數中。這可以簡化程式碼並提高效能。在這篇文章中,我們將探索實現此目標的最有效方法。
C 中的傳統方法是使用 std::ifstream 和 std::getline() 函數。然而,這需要逐行迭代地讀取文件,這對於大文件來說效率很低。
更有效的解決方案是利用 std::istreambuf_iterator 類別。此類別提供了流內容的迭代器接口,允許我們在單一操作中將整個流讀入字串中。
以下是示範此方法的範例程式碼:
<code class="cpp">#include <fstream> #include <string> int main(int argc, char** argv) { std::ifstream ifs("myfile.txt"); std::string content((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>())); return 0; }</code>
在此程式碼中,內容變數使用檔案「myfile.txt」的內容進行初始化。 (std::istreambuf_iterator
或者,您可以直接使用content.assign 方法,而無需建立臨時字串變量,如下所示:
<code class="cpp">std::ifstream ifs("myfile.txt"); std::string content; content.assign((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>()));</code>
這種最佳化方法避免了逐行迭代讀取文件的開銷,使其效率顯著提高,尤其是對於大文件。
以上是如何在 C 中高效地將整個文件讀入字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!