C++ entfernen Sie nachgestellte neue Zeile aus der text Datei
Gibt es eine Möglichkeit in C++ zu entfernen/trimmen eine nachfolgende neue Zeile aus einer text-Datei?
Beispielsweise
content content
content content
content content
<- this line in the text file is empty and needs to go ->
Ja, aber ich würde vorschlagen, einer Sprache auf höherer Ebene. Vielleicht python, das wäre immer so einfach. Wie viele Dateien müssen diese tun?
Sind Sie sicher, dass die Linie tatsächlich vorhanden ist und nicht ein Artefakt von Ihrem editor. Wenn die Letzte Zeile mit Inhalt ist terminiert mit '\n', dann ein editor kann die Anzeige einer leeren letzten Zeile, auch wenn diese Zeile enthält keine Daten.
Ich dachte nicht einmal daran, mit '\n'. Ich war mit endl.
Sind Sie sicher, dass die Linie tatsächlich vorhanden ist und nicht ein Artefakt von Ihrem editor. Wenn die Letzte Zeile mit Inhalt ist terminiert mit '\n', dann ein editor kann die Anzeige einer leeren letzten Zeile, auch wenn diese Zeile enthält keine Daten.
Ich dachte nicht einmal daran, mit '\n'. Ich war mit endl.
InformationsquelleAutor NateTheGreatt | 2010-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sicher! Eine Möglichkeit wäre es, Lesen Sie die Datei in einen std::string
und dann verwenden Sie eine der Techniken, die hier beschrieben:
C++ Entfernen, neue Zeile von mehrzeiligen string
dann könnte man die Datei überschreiben mit dem neuen Ergebnis. Natürlich, dieser Ansatz ist nicht sinnvoll, wenn der Umgang mit sehr großen Dateien (sagen wir 2GB), aber so etwas ist nicht eine Einschränkung gemäß Ihrer ursprünglichen Frage.
Diese thread hat auch große material auf die Entdeckung von neuen Linien.
InformationsquelleAutor karlphillip
InformationsquelleAutor Benjamin Lindley
Müssen Sie alle Lesen den Inhalt aus der Datei und schreibt den Inhalt wieder in einer Weise, dass keine leere Zeile vorhanden ist, oder die Art und Weise, die Sie wollen.
ich kann Ihnen nicht sagen, bis ich weiß, genaue Datei-format. Lesen Sie auf der c++ fstream sind: cplusplus.com/reference/iostream/fstream
Das format der Datei ist genau wie oben, nur mit mehr Zeilen, mehr unterschiedliche Inhalte
ok, dann fstream sind, helfen.
InformationsquelleAutor Donotalo
Können Sie erstellen einen einfachen filter angewendet, wie in:
Oder erstellen Sie Ihre eigenen Datei-Eingabe-stream ala:
Dann würde der code ähneln (ungetestet)...
(Ersatz myin für cin wenn gewünscht, dann myin.close()). Keine Notwendigkeit für die Verwendung von std::strings für etwas so einfach: Sie ist einfach langsam alles runter. Eine der großen stärken von C (und damit auch C++) ist in der Lage, effizient zu verarbeiten, Daten, die ein Zeichen in einer Zeit.
InformationsquelleAutor Tony Delroy
Ist die effizienteste Methode wäre, zu versuchen, zu das Ende der Datei und verschieben Sie die Datei-Ende-Zeiger rückwärts. Dies ist leider nicht tragbar, weil es keine standard-Methode zum festlegen der end-of-file-pointer, die entweder das C-oder C++ - standard-Bibliotheken. Sie brauchen, um eine Plattform-spezifische Funktion wie
SetEndOfFile
auf Windows oderftruncate
auf POSIX. Zum Beispiel:InformationsquelleAutor Adam Rosenfield