Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » zeilenweise einlesen c++

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.02.2006, 19:10 Uhr
Spacelord
Hoffnungsloser Fall


Hallo,
ohne mir deinen Code jetzt genauer angesehen habe....
Ich hatte hier letztens nen bischen Code gepostet mit dem du ganz einfach und typsicher config Dateien parsen kannst.
www.fun-soft.de/showtopic.php?threadid=13630

Im Grunde musst du nur eine Klasse ableiten, die Variablen darin anlegen die du mit deinem File mit Werten belegen willst und in der Methode init die "Wertbezeichnung" und den dazugehörigen Datentyp in die map eintragen.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: