Von Datei auslesen...

Darian

Erfahrenes Mitglied
Hallo Leute,

ich bin gerade dabei als Übung eine Liste zu programmieren. Und ich habe heute die Funktion speichern zugefügt.

In eine Datei sind die Listen jetzt wie folgt gespeichert:
Code:
0 Test 21
1 irgendwas 30
2 ... ...

Immer mit Leerzeichen dazwischen.

Ich würde jetzt gerne auch wieder aus der Datei auslesen, und die Daten wieder in Variablen speichern.

Also, wie kann ich jede einzelne Zeile auslesen, bei den Leerzeichen aufsplitten, und jedes einzeln bearbeiten. Die Zahlen als int, und die Namen als String.
Code:
fstream file;
	
	m_now = m_start;
	
	file.open("save.log", ios::out | ios::trunc);
	
	while(m_now != NULL)
	{
		file << m_now->ids << " " << m_now->name << " " << m_now->age << "\n";
		m_now = m_now->child;
	}
	
	file.close();

Wäre super wenn mir hier jemand Infos geben könnte.

lg und danke für eventuelle Infos
Darian
 
Hallo,

danke für die Hilfe, das mit getline geht klar. Und müßte ohne Probleme funktionieren.

Aber wie sollte ich das mit substr machen? Ich weiß ja vorher nicht wieviel Zeichen ich mit substr aufsplitten müßte.

Gibt es eine Funktion wo ich sagen kann, erstes, zweites oder drittes Wort ansprechen?

Bitte noch um ein paar genauere Infos....

lg Darian
 
Du suchst in deinem String nach dem Leerzeichen und merkst dir, ab wieviel Bytes eines kommt.

Das geht per for-Schleife, oder du benutzt std::string interne Methoden, ganz wie du magst.
 
Hallo,

ich habe es mit dem sstream gemacht.

Code:
while(!file.eof())
	{
		getline(file, zeile);
		istringstream myline(zeile);
		
		myline >> ids;
		myline >> name;
		myline >> age;
		
		cout << "ID: " << ids << endl;
		
		CreateBind(name, age);
	}

Bis darauf dass die Schleife einmal zuviel durchläuft, funktioniert es so ganz gut.
(nimmt die letzte Zeile doppelt)

lg und danke für die Infos
Darian
 
Ah ok, es hat jetzt mit deiner Methode richtig funktioniert, danke dir.

Habe das irgendwo im Internet so gesehen.

lg Darian
 
Zurück