LadyMarion
Mitglied
Hallo,
hab mal wieder eine Frage:
Ich habe eine Datei, in der jede Zeile folgendermaßen aufgebaut ist:
key | value | comment
Ich möchte nun über eine map mit dem key auf den value zugreifen, was ich in folgender Funktion bereits realisiert habe:
Soweit funktioniert alles, aber es könnte ja sein, dass man sich bei dem key vertippt oder einen key eingibt, der gar nicht vorhanden ist. Dies soll abgefangen werden, d.h. es soll eine Fehlermeldung ausgegeben und das Programm abgebrochen werden.
Also im Prinzip soll für die Zeile 12 sowas in der Art eingefügt werden:
Gibt es da eine Möglichkeit für so eine Anweisung oder brauch ich dafür extra eine Funktion, die ich aufrufe und die das überprüft?
Könnt Ihr mir da weiterhelfen?
Vielen Dank schon mal!
hab mal wieder eine Frage:
Ich habe eine Datei, in der jede Zeile folgendermaßen aufgebaut ist:
key | value | comment
Ich möchte nun über eine map mit dem key auf den value zugreifen, was ich in folgender Funktion bereits realisiert habe:
Code:
1 bool read() {
2 map<string, double> data;
3 ifstream IN ("test.txt");
4 if (IN.is_open()) {
5 string line;
6 while (getline(IN, line)) {
7 stringstream sstr;
8 string pipe, key, comment;
9 double value;
10 sstr << line;
11 sstr >> key >> pipe >> value >> pipe >> comment;
12 data[key] = value;
13 }
14 IN.close();
15 return true;
16 } else {
17 cout<<"ERROR opening test.txt\n";
18 return false;
19 }
20 }
Soweit funktioniert alles, aber es könnte ja sein, dass man sich bei dem key vertippt oder einen key eingibt, der gar nicht vorhanden ist. Dies soll abgefangen werden, d.h. es soll eine Fehlermeldung ausgegeben und das Programm abgebrochen werden.
Also im Prinzip soll für die Zeile 12 sowas in der Art eingefügt werden:
Code:
if (/* also wenn der key tatsächlich existiert */) {
data[key] = value;
} else {
cerr <<"# Invalid key! Program terminated!"<<endl;
exit(1);
}
Gibt es da eine Möglichkeit für so eine Anweisung oder brauch ich dafür extra eine Funktion, die ich aufrufe und die das überprüft?
Könnt Ihr mir da weiterhelfen?
Vielen Dank schon mal!