# Bestimmte Zeile einlesen/schreiben in einem txt Document



## finnex (12. Februar 2008)

Hallo,
ich würde gerne aus einer Text Datei nur einzelne Zeilen auslesen können und wieder speichern können.


Als Beispiel ich habe dieses Textdocument:

Max Mustermann
Musterstarße Nr. 11
Musterstadt

Peter Mustermann
Musterstarße Nr. 11
Musterstadt

Gabi Mustermann
Musterstarße Nr. 11
Musterstadt


Wie kann ich jetz z.b nur Peter Mustermann einlesen um ihn dann in Paul Mustermann umbenennen? 


Ich kann bis jetz nur eine ganze Textdatei mit diesem Befehl einlesen;


```
ifstream in("1.txt");
while(!in.eof())
{
char ch;
ch=in.get();
cout<<ch;
};
```


Mfg finnex


----------



## deepthroat (12. Februar 2008)

Hi.





finnex hat gesagt.:


> ich würde gerne aus einer Text Datei nur einzelne Zeilen auslesen können und wieder speichern können.


Du kannst grundsätzlich nur einzelne Zeichen überschreiben und Text hinten ans Ende der Datei anhängen. D.h. was du vorhast würde nur gehen, wenn die Zeilen beide gleich gross wären.

Das einfachste ist die Datei in den Speicher zu lesen und beliebig zu ändern, dann am Schluss komplett zu überschreiben.


finnex hat gesagt.:


> Ich kann bis jetz nur eine ganze Textdatei mit diesem Befehl einlesen;
> 
> 
> ```
> ...


<schreikrampf>Ahhrrgg, also wenn jetzt hier noch einer die .eof() Methode so verwendet, beiß ich hier die Lampe ab..</schreikrampf>

Wo hast du denn das her?


```
ifstream in("ein.txt");
string zeile;
while (getline(in, zeile)) { // KEIN .eof() ! VERDAMMT!
  // .. hier die Zeile z.B. in einen vector speichern
}
```
Gruß


----------



## finnex (12. Februar 2008)

Hallo,
also gibt es keine richtige Lösung eine Zeile alleine auszulesen?

Zu deiner Frage woher ich das "eof" her habe:
http://www.volkard.de/vcppkold/dateien.html

Mfg finnex


----------



## deepthroat (13. Februar 2008)

Hi.





finnex hat gesagt.:


> Hallo,
> also gibt es keine richtige Lösung eine Zeile alleine auszulesen?


Du kannst natürlich auch nur eine bestimmte Zeile einlesen. Da aber eine Datei nicht zeilenorientiert aufgebaut ist, mußt du solange Zeilen einlesen bis die gewünschte Zeile gelesen wurde.

Falls du aber irgendwas in der Datei ändern willst, ist es einfacher die Datei erstmal komplett auszulesen.


finnex hat gesagt.:


> Zu deiner Frage woher ich das "eof" her habe:
> http://www.volkard.de/vcppkold/dateien.html


Ja, leider gibt es auch schlechte Tutorials und Bücher wo so ein Schwachsinn drin steht...

Ich hab grad 'ne Email geschrieben - mal sehen was draus wird...

Gruß


----------



## SunnyBunny (13. Februar 2008)

deepthroat hat gesagt.:


> <schreikrampf>Ahhrrgg, also wenn jetzt hier noch einer die .eof() Methode so verwendet, beiß ich hier die Lampe ab..</schreikrampf>



Hey, ich benutze das auch zum Dateien auslesen, wenn ich denn mal eine Datei auslese. Kannst Du erklären, wieso das so nicht gut ist?
Lese solange Zeilen aus, bis die Datei zu Ende ist.
Man lernt ja gerne dazu. ;-)

Gruß Sunny


----------



## deepthroat (13. Februar 2008)

Hi.





SunnyBunny hat gesagt.:


> Hey, ich benutze das auch zum Dateien auslesen, wenn ich denn mal eine Datei auslese. Kannst Du erklären, wieso das so nicht gut ist?
> Lese solange Zeilen aus, bis die Datei zu Ende ist.
> Man lernt ja gerne dazu. ;-)


Kein Problem. Ich habe es schon einige Male erklärt.. 

Siehe http://www.tutorials.de/forum/1376694-post8.html

Hier nochmal ein Beispiel wo es nicht mit der eof() Methode funktioniert hat:

http://www.tutorials.de/forum/c-c/224431-textdatei-string.html#3

Gruß


----------



## SunnyBunny (13. Februar 2008)

Danke 
Werd ich ab sofort nicht mehr verwenden.


----------

