fstream mehrere int werte in einer txt speichern
-
Hallo zusammen,
ich habe das Internet jetz durchwühlt, aber keine direkten Lösungen zu meinem Problem gefunden.
Ich habe mich eben über die Funktionen fon fstream erkundigt(bin noch Anfänger).
Ich habe inzwischen gelernt einzelne Werte zu speichern:
ofstream myfile; myfile.open("example.txt"); myfile << 5 << endl; myfile.close();aber ich hätte gerne mehrere Werte in der Textdatei, die ich später auch wieder laden kann.
z.B.
a=1
b=2
c=3Diese 3 Werte möchte ich in einer Datei speichern, aber dann habe ich in der Textdatei " 123 " stehen und wie bekomm ich die geordnet wieder raus? Also ich weiß, dass ich das mit nem getline befehl machen kann, aber dann bekomm ich alles als 123 und nicht als a, b, c.
kann mir jemand sagen, wie ich a, b, c, einzeln wieder daraus bekomme?
-
Mach ein Leerzeichen dazwischen.
-
Also meinst du:
ofstream myfile; myfile.open("example.txt"); myfile << 5 << " " << 4 << endl; myfile.close();meine Variante diese Werte wieder zu laden wäre:
ifstream myfile("example.txt"); int a; if(myfile >> a); cout<<a<<endl; }dann gibt der mir aber nur die 5 aus. Wie bekomm ich die nächsten Zahlen?
btw danke für die schnelle antwort

-
Ok ich habe das Problem glaub ich selbst gelöst, aber danke für den Tipp mit dem Leerzeichen. Das war sehr hilfreich

Ich musste nach dem ersten Einlesen von "5" das Leerzeichen mit myfile.peek()überspringen und dann wieder die nächste Zahl per if(myfile >> b)
Einlesen.ifstream myfile("example.txt"); int a; int b; if(myfile >> a); myfile.peek(); if(myfile >> b); cout<<a<<endl; cout<<b<<endl;
-
kannst auch >> a >> b; schreiben. >> überspringt das Leerzeichen dann selbst
greetz KN4CK3R
-
Hallo Obstsalat,
Das peek ist hier unnötig (wie KN4CK3R schon geschrieben hat).
Was soll deiner Meinung nach das if hier bewirken?if(myfile >> a);Es bewirkt nämlich nichts und kann auch weggelassen werden.
-
Unterstützt std::istream eigentlich folgende Schreibweise um eine Zeile mit Inhalt "3, 2\n" einzulesen?
int a, b; std::cin >> a >> ", " >> b >> "\n";Ich glaube nicht, aber es wäre ja eigentlich einfach zu implementieren und lesbar. Man könnte es sogar noch erweitern auf
int a, b; std::cin >> a >> ", " >> b >> optional("\n");Und natürlich reguläre Ausdrücke statt einfachen Strings.