Probleme beim Dateieinlesen



  • Liebe Forum-User,

    mir gelingt es einfach nicht eine selbstgeschriebene INI-Datei mit C++ einzulesen. Ich habe bereits einige Codebeispiele aus diesem Board versucht, aber es kommen immer Fehler. Hat vielleicht jemand von euch einen funktionierenden Code parat?

    Die Ini-Datei soll so aussehen:
    [abschnitt]
    wert1=zahl1;
    wert2=zahl2;
    ...

    Ich habe versucht das File mit 'stream=file("test.ini");' einzulesen und auszugeben. Das funktioniert auch alles. Aber das Splitten des Strings in den Teil vor und nach dem Gleichheitszeichen klappt einfach nicht.

    Für Eure Hilfe schon mal vielen Dank im Voraus!



  • Hi,

    lies zeilenweise aus und wenn du dann z.B. so etwas hast:
    "foo = 100"

    dann:

    string str = "foo = 100";
    string s1  = str.substr(0, str.find('='));
    string s2  = str.substr(str.find('=')+1, str.length()-str.find('=')-1);
    

    Bin nicht sicher, ob es klappt, aber so ähnlich sollte es.

    MfG MAV



  • Mit welchen Methoden muss ich dann die Datei einlesen? Mit fstream kann ich doch nicht direkt in einen String speichern?

    Habt ihr vielleicht noch ein Code-Beispiel für mich?

    Wäre echt klasse!!!



  • Hi
    einlesen kannst du z.B. so:

    // #include <fstream> <- muss vorhanden sein
    // #include <string>
    
    ...
    std::ifstream input_file("datein.ame",std::ios::in);
    std::string input_data;
    while(!input_file.eof())
    {
      input_data += input_file.get();
    }
    

    dannach ist der inhalt der Datei komplett in input_data abgelegt!

    Aber du solltest daran denken das bei dem Code den Mis2com gepostet hat immer nur mit einer Zeile gehandled wird!

    Daher musst du noch einen Code einbauen der die die einzelnen Zeilen z.B. in ein Array oder einen STL-Container(z.B. std::vector) speichert. und du dann mit hilfe des Codes von Mis2com die einzelnen Werte auslesen und interpretieren lassen kannst.

    Ich werde dir jetzt keine Hilfestellung geben sonst versuchst du es wahrscheinlich gar nicht erst selbst auf die Lösung zu kommen.

    Ein kleiner Tip am Rande '\n'(New Line) & '\r'(Carriage Return) zeigen dir das eine Zeile zu ende ist!



  • hmmm...das Problem ist, dass ich C++-Anfänger bin und ehrlich gesagt keine Ahnung, wie ich mit den Strings und Vectoren umgehen soll.

    Mir ist die Theorie des Problems schon klar und in anderen Sprachen, hätte ich mit der Lösung auch keine Probleme, aber für C++ fehlen mir leider die notwendigen Kenntnisse. 😞


Anmelden zum Antworten