000
14.02.2006, 12:19 Uhr
Pler
Einer von Vielen (Operator)
|
Hi,
ich finde den Fehler einfach nicht:
C++: |
ifstream in; string first; string second; string temp; string tmpZeile; stringstream tmpStream;
in.open( filepath.c_str() , ios::in ); // filepath wird übergeben while( in ) // Parsen der Konfigdatei { std::getline( in , tmpZeile ); tmpStream.str( tmpZeile ); tmpStream >> first >> temp >> second;
if( first == MARKE1 ) { m_string1 = second; } else if(...) { .... }
// Mit und ohne: (Das scheint sich zwar anders zu verhalten aber prinzipell die gleichen Fehler) tmpStream.clear(); tmpZeile.clear(); first.clear(); second.clear(); temp.clear(); } // Ende von while ( in )
|
Das Problem ist nun, dass die Variablen(bzw. Objekte) nicht richtig mit den Werten gefüllt werden.
- Manchmal ist in tmpZeile kein vernünftiger Wert - Manchaml ist in first oder second kein vernünftiger Wert - temp is eigentlich nur ein Plarthalter, der das '=' aufnehmen soll.
(Verstehe sowieso nicht, warum tmpStream >> first >> " = " >> second; nicht funktioniert
Wenn ich mir die Variablem/Objekte im Debugmodus anschaue, dann haben die ja am Anfang alle den Wert {""} später dann ab und zu mal das richtige Wort oder {???}
Das mit den Fragezeichen verstehe ich ja noch, wenn es eine leere Zeile ist, oder eine Zeile mit nur einem Wort.
Ach so die Kondigdatei hat folgende Syntax:
.conf: |
config.conf
marke1 = wert1 makre2 = 3.2
marke3 = DiesUndDas . . .
|
Könnte es eventuell möglich sein, dass diese Zeilen nicht erlaubt sind? tmpStream.str( tmpZeile ); tmpStream >> first >> temp >> second; Ich konnte bis jetzt allerdings keinen Hinweiß darauf finden.
Vielen Dank Dieser Post wurde am 14.02.2006 um 12:33 Uhr von Pler editiert. |