Verschiedene Daten aus Textfile auslesen
-
Hallo,
hab wieder einmal eine womöglich sehr dumme Frage:
ich habe nun ein recht umfangreiches Programm fertig gestellt und würde jetzt gerne verschiedenen Anfangsparameter aus einer Textfile ins Programm einlesen.Die Datei hat z.B. folgende Form:
`(double) (double) (double) "Beschreibung der Einträge dieser Zeile"
(string) "Beschreibung der Einträge dieser Zeile"
(int) "Beschreibung der Einträge dieser Zeile"
...`
Dabei sind die einzelnen Eintrage mit Tabstop (oder Leerz.) getrennt und die Beschreibungen der einzugebenden Variablen sollen natürlich nicht importiert werden.
Kann mir da jemand weiterhelfen wie das zu programmieren ist?
Vielen Dank!
-
wenn du genau weißt, wie die textdatei aufgebaut ist, kannst du es mit cin machen
-
Hallo Poolshark,
im Prinzip geht das so:
#include <iostream> #include <fstream> #include <string> #include <limits> // numeric_limits int main() { using namespace std; const streamsize ALLES = numeric_limits< streamsize >::max(); ifstream datei("Datei.txt"); if( !datei.is_open() ) { cerr << "Fehler beim Oeffnen der Datei" << endl; return -1; } double d1, d2, d3; datei >> d1 >> d2 >> d3; datei.ignore( ALLES, '\n' ); // Rest der Zeile überlesen string wort; datei >> wort; datei.ignore( ALLES, '\n' ); // Rest der Zeile überlesen int i; datei >> i; datei.ignore( ALLES, '\n' ); // Rest der Zeile überlesen if( datei ) { cout << "alles richtig gelesen" << endl; // usw. } return 0; }Gruß
Werner
-
Vielen Dank lieber Werner, genau danach habe ich gesucht!
Eine kurze Frage vielleicht noch:
Wie kann ich die Zeile 9const streamsize ALLES = numeric_limits< streamsize >::max();verstehen?
-
Poolshark schrieb:
Vielen Dank lieber Werner, genau danach habe ich gesucht!
Eine kurze Frage vielleicht noch:
Wie kann ich die Zeile 9const streamsize ALLES = numeric_limits< streamsize >::max();verstehen?
Das ist nur eine kürzere Form überall
numeric_limits< streamsize >::max();zu schreiben, näheres erklärt dir die API zur Methodeifstream::ignore(...)genau hier: http://www.cplusplus.com/reference/iostream/istream/ignore/
-
Poolshark schrieb:
Vielen Dank lieber Werner, genau danach habe ich gesucht!
Eine kurze Frage vielleicht noch:
Wie kann ich die Zeile 9const streamsize ALLES = numeric_limits< streamsize >::max();verstehen?
Das ist die Deklaration einer Variable namens 'ALLES' vom Typ 'std::streamsize'. Diese belege ich hier mit dem größtmöglichen Wert. Den wiederum liefert mir die statische Methode max() der Klasse std::numeric_limits<>.
Diese Variable mache ich mit vorgestellten 'const' noch konstant, um klar zu legen, dass ich nicht vorhabe, diese im Programm zu verändern.Die Zeile ersetzt ein #define ALLES INT_MAX - mit dem Unterschied das obige Konstruktion typsicher ist und daher auch funktioniert, wenn streamsize intern nicht als int definiert ist.
Gruß
Werner