Umgang mit Newline-Codierungen mit std::ifstream
Bei der Arbeit mit Textdateien können inkonsistent codierte Newline-Codierungen eine Herausforderung darstellen. Dieser Artikel befasst sich mit dem Problem der ordnungsgemäßen Handhabung von LF-, CR- und CRLF-Zeilenenden mithilfe der Klasse std::ifstream.
std::istream& getline ( istream& is, string& str );
Die getline-Funktion liest eine Zeile bis zu einem Zeilenumbruchzeichen. Am Ende der Zeile können jedoch noch CR- oder CRLF-Zeichen verbleiben. Um dieses Problem zu beheben, schlägt der Artikel die Verwendung einer benutzerdefinierten Funktion namens „safeGetline“ vor:
std::istream& safeGetline(std::istream& is, std::string& t) { // ... }
Die Funktion „safeGetline“ durchläuft den Eingabestream, überprüft jedes Zeichen und erkennt die entsprechende Newline-Codierung. Es verarbeitet alle drei gängigen Zeilenumbruchzeichen: LF, CR und CRLF.
Um die Funktion „safeGetline“ zu testen, stellt der Artikel ein Beispielprogramm bereit, das eine Textdatei öffnet, ihre Zeilen mit „safeGetline“ liest und die Gesamtzahl zählt von Linien. Dies zeigt die Fähigkeit der Funktion, verschiedene Newline-Codierungen zu verarbeiten, die in realen Textdateien vorkommen.
Durch die Verwendung der Funktion „safeGetline“ können Programmierer Code schreiben, der alle gängigen Newline-Codierungsformate unterstützt, unabhängig von der Plattform oder Quelle der Datei Textdateien.
Das obige ist der detaillierte Inhalt vonWie kann ich mit C zuverlässig Zeilen aus Textdateien mit gemischten Newline-Codierungen lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!