Benutzer mit den meisten Antworten
Textdatei einzelne Zeilen ändern

Frage
-
Hallo =)
Wie kann ich in einer Textdatei... zb
Erbeeren
Haselnüsse
Tomaten
Nur zb die zweite Zeile ändern.. Meinetwegen in Walllnüsse?
Wie man einen String in eine Textdatei einließt, außliest, hintenanhängt usw weiß ich aber wie kann man einzelne Zeilen ändern?
Bitte um Hilfe! xD
Antworten
-
fstream kennt die Funktion getline!
Der Algorithmus ist doch einfach:
- Datei 1 zum Lesen öffnen
- Datei 2 zum schreiben öffnen
- Schleife solange ein Datensatz in Datei 1
Wenn Zeile==gesuchtem Inhalt Schreibe Neuen Inhalt in Datei 2
Andernfalls schreibe bestehende Zeile in Datei 2 - Dateien schließen
Ich denke alle weiteren Details solltest Du Dir grundsätzlich in einem Tutorial erarbeiten. Infos hast Du nun genug ;)
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort markiert Martin RichterModerator Montag, 31. Mai 2010 07:02
Alle Antworten
-
Hallo 4l3x11!
> Erbeeren
> Haselnüsse
> Tomaten
>
> Nur zb die zweite Zeile ändern.. Meinetwegen in Walllnüsse?
Du musst die Datei Zeile für Zeile einlesen und anschliessend sofort
wieder Zeile für Zeile rausschreiben... am besten in eine temporäre
Datei, die Du am ende dann umbenennst... diesen Ansatz musst Du
zumindest bei sehr großen Dateien verwenden.
Bei kleineren Dateien kannst Du die ganze Datei einfach komplett
einlesen und dann die Daten im Speichern ändern und ales wieder
rausschreiben.
Oder was wolltest Du noch genau wissen?
Greetings
Jochen
Jochen Kalmbach (MVP VC++) -
Dann sag uns doch erst einmal in was Du entwickeln willst.C - Nur mit CRTC++ - mit STLC/C++ - Mit Windows APIC++ - mit MFCC++/CLI - mit .NETWas MFC betrifft lies die Doku zu CStdioFile. Dort findest Du einfachsteFunktionen zeilenweise zu lesen.Was die CRT betrifft, siehe fopen, fgets usw...BTW: Wir geben gerne Tipps in die richtige Richtung aber ich erwartezumindest auch Eigenengagement.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
fstream kennt die Funktion getline!
Der Algorithmus ist doch einfach:
- Datei 1 zum Lesen öffnen
- Datei 2 zum schreiben öffnen
- Schleife solange ein Datensatz in Datei 1
Wenn Zeile==gesuchtem Inhalt Schreibe Neuen Inhalt in Datei 2
Andernfalls schreibe bestehende Zeile in Datei 2 - Dateien schließen
Ich denke alle weiteren Details solltest Du Dir grundsätzlich in einem Tutorial erarbeiten. Infos hast Du nun genug ;)
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort markiert Martin RichterModerator Montag, 31. Mai 2010 07:02
-
Ich möchte doch nur wissen wir ich auf eine bestimmte Zeile zugreifen kann.. ich möchte die Datei quasi wie eine *.ini benutzen...
Also da stehen nur Werte drinn..
Wie man in Dateien schreibt und so weiß ich. Und getline kenn ich auch. Aber wie kann ich nur eine bestimmte Zeile ändern könnt ihr mir das nicht einfach sagen? :D
-
Ok vielleicht bin ich das ein wenig falsch angegangen...
Anderes Beispiel :
Das Programm soll eine Art Rechner für Produkte werden. Man muss von jedem Produkt nurnoch die Menge angeben und der Preis ist gespeichert undzwar in einer txt-Datei..
In der ersten Zeile steht der Preis für die Äpfel in der zweiten der für die Kartoffeln.
Nun hab ich eine Variable - preisÄpfel - wie kann ich dieser den wert der in der Datei in Zeile 1 steht zuweisen?
Ich hoffe das ist nun etwas verständlicher und mir kann jemand helfen ^^
-
Man kann nicht auf eine bestimmte Zeile zugreifen... Man kann die Dateinur Zeilenweise Lesen und Schreiben...Ausnahme Du hast eine feste Satzlänge!Wenn es eine INI Datei gibt, dann gibt es dafür auch eine API.Den Algorithmus habe ich Dir angegeben.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de