Datei Zeile für Zeile auslesen

Hi.

Was bringt es dir denn die Adressen der Zeiger zu speichern? Die tatsächlichen Objekte sind doch dann nicht gespeichert und werden sich auch nicht unbedingt wieder an der gleichen Stelle/Adresse befinden wie vorher falls sie irgendwie anders generiert werden.

Du mußt schon die Objekte selbst speichern. Dazu mußt du den kompletten Zustand der einzelnen Objekte (sprich die 3 GLfloat Membervariablen) speichern und danach wieder auslesen.

Gruß
 
Hallo,
irgendwie schwirrt mir gerade ziemlich der Kopf.
Ich möchte eine Datei Zeilenweise einlesen und in Variablen speichern.
Aber wo ist denn der Unterschied zwischen fstream, istream und ifstream? Ich hab jetzt schon viele Möglichkeiten gefunden eine Dateil Zeilenweise einzulesen, aber leider funktioniert keine davon bei mir.

Gruß KlaDi.
 
Hi.
KlaDi hat gesagt.:
Hallo,
irgendwie schwirrt mir gerade ziemlich der Kopf.
Ich möchte eine Datei Zeilenweise einlesen und in Variablen speichern.
Aber wo ist denn der Unterschied zwischen fstream, istream und ifstream?
fstream ist ein Datei-Stream, istream ein Eingabe-Stream und ifstream ist ein Eingabe-Datei-Stream.
KlaDi hat gesagt.:
Ich hab jetzt schon viele Möglichkeiten gefunden eine Dateil Zeilenweise einzulesen, aber leider funktioniert keine davon bei mir.
Welche Programmiersprache verwendest du denn?

Gruß
 
Ah, da erschließt ja schonmal ein wenig.
Also ich verwende C++ und hab nen Borland-Builder zur Verfügung.

Gruß KlaDi.
 
Aha.

Die Standardmethode um in C++ Dateien zeilenweise einzulesen ist folgende:
C++:
#include <fstream>
#include <string>

using namespace std;
...
string zeile;
ifstream datei("c:/temp/xyz.txt");

while (getline(datei, zeile)) {
  ...
}
Übrigens, wenn etwas nicht funktioniert, dann solltest du dazuschreiben warum es nicht funktioniert. (Fehlermeldungen, Ausgaben, deinen Programmtext) Hellsehen ist immer ein bißchen schlecht.

Gruß
 
Ja, hast ja recht, bin halt gerade irgendwie komplett verwirrt...Sorry.
Also ich hab jetzt mal Deinen Code eingegeben.
Da bekomme ich den Fehler "Could not find a march for 'std::getline(ifstream,std::basic_string<char,std::string_char_traits<char>,std::allocator<char>>)'".
Der Fehler tritt in der Zeile mit dem while auf.
 
Zuletzt bearbeitet:
Kann keiner was mit dem Fehler anfangen?
Bin ich vielleicht der einzige der den hat? Oder liegt das vielleicht am Borland Compiler?
 
Welche Version vom Borland Builder hast du denn? Evtl. ist der zu alt?

Die getline(istream, string) Funktion sollte mit dem <string> Header verfügbar sein.

Gruß

/edit: Hab grad bei mir im Borland BCC55 Verzeichnis nachgeschaut und es scheint, das Borland die Funktion nicht implementiert. Allerdings implementieren sie die getline(istream, string, char) Funktion. Dann mußt du halt die while Bedingung oben ändern in:
C++:
while(getline(datei, zeile, '\n')) {
 
Zuletzt bearbeitet:
Ich hab die Version 5.01.
Ich hab mal selbst noch nen bisschen was probiert und wenn ich es so mache:
Code:
#include<string>
#include<conio.h>
#include<stdio.h>
#include<fstream>

using namespace std;

void main()
{
     char* buffer;
     string word;
     FILE *f = fopen("D:\\testdatei.txt", "r");
     while(!feof(f))
     {
          word = fgets(buffer, sizeof(buffer), f);
          cout << word << endl;
     }
     fclose(f);
     getch()
}
dann bekomme ich den Inhalt meiner Datei, aber leider immer nur 3 Zeichen am Stück. hab schon versucht die irgendwie zusammenzusetzen, aber leider nicht hinbekommen.

Dank und Gruß KlaDi.
 
Naja, 5.01 ist ja schon ziemlich angestaubt. Das unterstützt mit Sicherheit nicht den C++ Standard. Funktioniert denn das getline mit den 3 Parametern nicht?

Gruß

/edit: Dein Code ist übrigens sehr fehlerhaft.
 

Neue Beiträge

Zurück