[C++ Anfänger] Eine Art "Config" Datei Schreiben & Auslesen



  • Hallöle liebes Forum 🙂

    da ich mich derzeit mit Großer interesse mit C++ beschäftige und auch versuche zu lernen, bastle ich immer ein wenig rum um mir das ganze selbst etwas zu verständlichen und mir einzuprägen.

    Nun bin ich bei fstream angekommen und hier gehts bei mir nicht mehr weiter ich versuche schon tage lang eine Lösung zu finden, aber will leider nicht so wie ich möchte 😞

    Nun ja zum eigentlichen Problem, ich versuche eine Art Konfigurations-Datei zu schreiben, welche vorerst nur den "User" und das "Passwort" speichern soll. Soweit so gut, solange ich das alles nur in eine Datei eintragen lasse ließt er das auch super aus, nur würde ich nun gerne die Datei "aufhübschen" und zwar wie folgt:

    User: Test1
    Passwort: Test2

    Der dazugehörige Code:

    void Create(){
    
    	char user[11];
    
    	cout << "Benutzer: ";
    	cin >> user;
    
    	ofstream Output("auth.ini");
    	Output << "User: ";
    	Output.write((char*)&user, sizeof(user));
    
    	Output.close();
    	getchar();
    	main();
    }
    

    Schön und gut, nur würde ich diese Datei auch gerne wieder auslesen und mir den Benutzernamen wieder ausgeben lassen.
    Und in diesem Fall haut er mir nur User: Test1 raus.

    Der Code zum Auslesen:

    void Read(){
    
    	char user[11];
    
    	ifstream Input("auth.ini");
    	Input.read((char*)&user, sizeof(user));
    
    	Input.close();
    
    	cout << "User: " << user;
    	cout << endl;
    	getchar();
    	main();
    }
    

    Bin momentan echt am verzweifeln 😡

    Ich würde mich mega freuen wenn mir da jemand weiterhelfen könnte 🙄

    Vielen Dank schonmal! 🙂



  • Wenn der Benutzer ein Wort ist:

    void Read(){
    
        std::string user;
        std::string beschreibung;
    
        ifstream Input("auth.ini");
        Input >> beschreibung >> user;
    
        Input.close();
    
        cout << "User: " << user;
        cout << endl;
        getchar();
        //main(); **NIEMALS**
    }
    

    - benutze std::string
    - rufe niemals main in deinem Programm auf



  • manni66 schrieb:

    - rufe niemals main in deinem Programm auf

    War wohl seine Art eine Schleife zu bauen. 🤡



  • Für das auslesen von .ini Dateien könntest du dir mal inih anschauen (einfach in dein Programm mit einbinden) https://github.com/benhoyt/inih



  • manni66 schrieb:

    Wenn der Benutzer ein Wort ist:

    void Read(){
     
        std::string user;
        std::string beschreibung;
     
        ifstream Input("auth.ini");
        Input >> beschreibung >> user;
     
        Input.close();
     
        cout << "User: " << user;
        cout << endl;
        getchar();
        //main(); **NIEMALS**
    }
    

    - benutze std::string
    - rufe niemals main in deinem Programm auf

    Habe ich so mal Probiert und umgeschrieben, doch dann werden meine ">>"/"<<" Operatoren Rot markiert mit der Aussage:

    Fehler: Kein ">>"- Operator simmt mit diesen Operanden überein.

    Hab das 1:1 in dein beispiel umgeschrieben. 😕

    Danke für den Hinweiß auf den Versuch mit der Main Schleife 🙄

    hardware schrieb:

    Für das auslesen von .ini Dateien könntest du dir mal inih anschauen (einfach in dein Programm mit einbinden) https://github.com/benhoyt/inih

    Werde ich mir auch mal anschauen danke dir 🙂



  • Simpl3x schrieb:

    Habe ich so mal Probiert und umgeschrieben, doch dann werden meine ">>"/"<<" Operatoren Rot markiert mit der Aussage:

    Fehler: Kein ">>"- Operator simmt mit diesen Operanden überein.

    Was eine IDE rot markiert ist egal, entscheidend ist, was der Compiler sagt.
    Hast du ein #include <string> eingefügt?



  • Okay das #include hat gefehlt 🙄 peinlich ._.

    Aber nun habe ich das Problem, dass wenn er die Datei auslesen soll, nur "User: " ausgegeben wird und immer wenn ich Enter drücke kommt wieder eine Leerzeile + "User: " also immernoch nicht das erhoffte ergebnis 😞

    Hier nochmal der Code evtl. habe ich was falsch gemacht:

    void Create(){
    
    	string user;
    	string descr;
    
    	cout << "Name: ";
    	cin >> user;
    
    	ofstream schreiben("auth.ini");
    	schreiben << "Username:";
    	schreiben << user;
    
    	schreiben.close();
    	getchar();
    }
    
    void Read(){
    
    	string user;
    	string descr;
    
    	ifstream lesen("auth.ini");
    	lesen >> descr >> user;
    
    	lesen.close();
    
    	cout << "User: " << user;
    	cout << endl;
    	getchar();
    
    }
    

    Danke manni für deine schnellen antworten!



  • Du musst noch ein Trennzeichen in die Datei schreiben, also

    schreiben << "Username: ";
    schreiben << user;
    


  • Hat einwandfrei Funktioniert!
    Und für sowas Simples hab ich so lange gebraucht 😕

    Vielen Dank! 🙂


Anmelden zum Antworten