使用 std::ifstream 處理換行符
處理文字檔案時,不一致的編碼換行符可能會帶來挑戰。本文解決了使用 std::ifstream 類別優雅地處理 LF、CR 和 CRLF 行結尾的問題。
std::istream& getline ( istream& is, string& str );
getline 函數讀取一行直到換行符。但是,它可能會在行尾留下殘留的 CR 或 CRLF 字元。為了解決這個問題,本文建議使用名為 safeGetline 的自訂函數:
std::istream& safeGetline(std::istream& is, std::string& t) { // ... }
safeGetline 函數迭代輸入流,檢查每個字元並偵測適當的換行符編碼。它處理所有三個常見的換行符:LF、CR 和 CRLF。
為了測試 safeGetline 函數,本文提供了一個範例程序,該程式開啟一個文字文件,使用 safeGetline 讀取其行,併計算總數的線路。這證明了該函數處理現實文字檔案中遇到的各種換行符編碼的能力。
透過利用 safeGetline 函數,程式設計師可以編寫適應所有常見換行符編碼格式的程式碼,無論平台或來源如何文字檔案。
以上是如何使用 C 可靠地從具有混合換行編碼的文字檔案中讀取行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!