config auslesen



  • Ich möchte überprüfen, ob eine Variable, die im String y genannt wird, existiert.
    Zur Verdeutlichung habe ich ein Ansatz gemacht:

    #include <string>
    #include <iostream>
    
    int main()
    {
        string x;
        string y = "x";
    
        if(/* Gibt es die Variable, die in y steht? */)
        {
    	cout << y << " existiert!" << endl;
    	x = y;
        }
        else
        {
    	cout << y << " existiert nicht!" << endl;
        }
    }
    


  • Hallo

    Wozu braucht man denn sowas?

    chrische



  • Das wirst du so nicht hinbekommen - zur Laufzeit kennt dein Programm keine Variablennamen mehr, sondern nur noch Speicheradressen. Und zur Compilerzeit kannst du problemlos sehen, welche Variablen existieren - alle, die du selber deklariert/definiert hast.



  • Also, ich wollte mir eine Klasse schreiben, die Config-Files in der Form

    a = 1
    b = esel
    c = ein satz mit leerzeichen
    

    ausliest und die Werte dann zuweist.
    Dazu habe ich eine Funktion void(klasse, file), klasse ist die Klasse in der die Variable steht, der ein neuer Wert zugewiesen wird.
    Und dazu will ich überprüfen, ob diese Variable auch existiert, ich lese also das config-File aus, überprüfe, ob der ausgelesene String als Variable existiert und weise dann den Wert zu.

    Der Ansatz ist scheiße, oder?
    Mir ist halt nix besseres eingefallen 😞

    EDIT:
    Kann mir jemand einen vernünftigen Ansatz sagen? 🙂
    Ich änder mal den Titel des Threads...



  • das geht schon, musst die überprüfung nur umdrehen. du weisst, welche variablen dein programm hat, also suchst du im config file nach genau diesen. nicht andersrum. denn was im config file steht unterliegt keiner kontrolle.



  • ah ok danke, probier ich mal aus!



  • Wenn es um die Config deines eigenen Programmes geht, weißt du doch, welche Namen vorkommen können. Das heißt, du könntest per if() oder switch() die richtigen Zielvariablen für die einzelnen Werte herausfinden (was du nicht kennst, wird großzügig ignoriert).

    Wenn du fremde Dateien untersuchen wilst, empfehle ich eine std::map<>, um eine Zuordnung zwischen Name und Variable zu erreichen.


Anmelden zum Antworten