"komische" Werte bei Textdatei auslesen



  • Hi @all,
    ich versuche meinen Programm klar zu machen, daß er Werte aus einer ini-Datei ausliest.
    Aber irgendwas klappt dabei nicht.
    Leider gibt er mir immer wieder die falschen Werte zurück 😞

    Anbei einmal das wesentliche:
    Zuerst die includes:

    #include "stdafx.h"
    #include <iomanip> 
    #include <iostream>
    #include <time.h>
    #include <math.h>
    #include <matrix.h>
    #include <stanzMatrix.h>
    #include <vector>
    #include <string>
    #include <cstdlib> // für exit( )
    #include <fstream>
    

    Nun die Ausleseprozedur

    bool debug_Ausgabe;
    bool graphen;
    int maxAnzahlErzeugendeElemente;
    
    bool dateiAuslesen()
      {
        // Definieren und Öffnen der Eingangsdatei
        int ersteStelle;
        int zweiteStelle;
        char buf[100];
    
        ifstream Quelle;            // Datentyp für Eingabestrom (s.o.)
        string Quelldateiname;
        Quelldateiname = "proggy.ini";
        //Quelle.open(Quelldateiname.c_str(),ios::in|ios::out);// Datei öffnen:
        //Quelle.open(Quelldateiname.c_str(),ios::binary|ios::out);// Datei öffnen:
        Quelle.open(Quelldateiname.c_str());// Datei öffnen:
    
        if (!Quelle)     // Fehlerabfrage
          {
              cerr << Quelldateiname
                   << " kann nicht geöffnet werden!\n";
              exit(-1);
          }
        //Graphen oder Ordnungen / Topologien
        Quelle.getline(buf, 10);
        graphen = (buf[0] == 0);
        // nur zum debuggen:
        graphen ? cout << "ja\n" : cout << "nein\n";
        //Graphen oder Ordnungen / Topologien
        Quelle.getline(buf, 20);
        ersteStelle = (int) buf[0];
        zweiteStelle = (int) buf[1];
        maxAnzahlErzeugendeElemente = (10*ersteStelle) + zweiteStelle;
    
        //Graphen oder Ordnungen / Topologien
        Quelle.getline(buf, 10);
        debug_Ausgabe = (buf[0] == 0);
        // nur zum debuggen:
        debug_Ausgabe ? cout << "ja\n" : cout << "nein\n";
        return true;
      }
    

    und die auszulesende Datei proggy.ini:

    0  // 0 steht für Graphen, 1 steht für Ordnungen/Topologien
    11 // dies ist die Anzahl der erzeugenden Elemente
    0  // 0 steht für keine DebugAusgaben, 1 steht für DebugAusgaben.
    

    Wie gesagt, zuerst soll er Null oder Eins auslesen, dann eine zweistellige Zahl, und zum Schluss wieder Null oder Eins.
    Leider klappt das nicht 😞
    Any ideas?



  • Wieso benutzt du nicht getline, liest in einen std::string und zerlegst diesen dann substr, find etc?

    Dann kannst du dir das buffer rumgehampel sparen.



  • maximus schrieb:

    Wieso benutzt du nicht getline, liest in einen std::string und zerlegst diesen dann substr, find etc?

    Dann kannst du dir das buffer rumgehampel sparen.

    ... weil ich diese Option bislang noch nicht kannte.
    Aber DAS war der Tip, nun funzt es.
    Danke!



  • Und außerdem gibt es einen gewaltigen Unterschied zwischen 0 (= '\0' - damit vergleichst du den Anfang deiner Eingabe) und '0' (Ziffer 0 - das steht in deiner Datei).


Log in to reply