Variablen Namen selbst eingeben?!



  • (Kann sein dass der Titel nicht wirklich passt^^)
    Hab ein kleines Problem, ich hoffe der Quellcode sagt alles.

    #include <cstdlib>
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    struct benutzer 
    {
    
      int alter;          
      int lieblingszahl;
    
    };
    
    int main()
    {
        string eingabe;
    
        cout<<"Bitte geben Sie ihren Namen ein:"<<endl;
        cin>>eingabe; //Angenommen hier wird jetzt "lisa" eingegeben...
    
        //Hier soll jetzt "benutzer lisa;" stehen
    
        //Danach soll "lisa.alter" und "lisa.lieblingszahl" ein Wert, den der   Benutzer eingibt, zugewiesen werden.
    
        system("PAUSE");
        return 0;
    }
    

    Mein Problem : man kann unmöglich "benutzer eingabe;" schreiben da dann der Benutzer eingabe hies 😞 .
    Kann / Muss man hier mit Zeigern arbeiten?



  • Schau dir std::map an.

    greetz, Swordfish



  • Meist kann man das aber besser lösen.. Was hast du denn genau vor, bzw was würde dich daran stören, wenn du die Variable einfach "user" oder so nennst?



  • Verdammt, manchmal kann ich aber auch wirklich ein didaktisches Wildschwein sein 🤡

    greetz, Swordfish



  • Es sollen hinterher 3 Namen eingegeben werden und dazu jeweils eine Struktur mit dem Namen der Person. Mein Problem ist ja eigentlich hier, dass ich

    benutzer "eingegebener Name";

    haben will.



  • tjaer schrieb:

    Es sollen hinterher 3 Namen eingegeben werden und dazu jeweils eine Struktur mit dem Namen der Person. Mein Problem ist ja eigentlich hier, dass ich

    benutzer "eingegebener Name";

    haben will.

    Welchen Mehrwert versprichst du dir davon, gegenüber benutzer users[3]; (dann müsstest du den Benutzernamen aber noch in "benutzer" speichern)?

    Sonst wäre es eine wirklich gute Lösung, wie unser Wildschwein Swordfish (:)) vorgeschlagen hat: std::map<std::string,benutzer> users; .

    Btw: Den Inhalt des Quelltextes bestimmst du und nicht der eingebende Benutzer, was auch gut so ist. Es ist einfach so, dass du vorher nicht weißt, welchen Namen der Benutzer eingibt, deshalb verwendet man ja Variablen.



  • benutzer users[3]; (dann müsstest du den Benutzernamen aber noch in "benutzer" speichern)?

    Jetzt klappts thx 😉



  • tjaer schrieb:

    (
    Mein Problem : man kann unmöglich "benutzer eingabe;" schreiben da dann der Benutzer eingabe hies 😞 .

    Schreib doch einfach "Benutzer" vor die Eingabe, dann bleibt ein eingegebenes "Rumpelstilzchen" auch ein "Rumpelstilzchen" 😉

    void clear()
    {
    	cin.clear();
    	cin.ignore(numeric_limits<streamsize>::max(),'\n'); 
    }
    
    int main()
    {
    	string in("Kuckuck!");
    
       	cout << "Bitte geben Sie Ihren Namen ein, beenden mit 'q': " << endl;
    
    	while(1)
    	{
    		cin >> in; 
    		if ( in == "q" ) return 0;
    		cout << "Benutzer: " << in << endl;
    		clear();
    	}
    	return 0;
    }
    


  • tjaer schrieb:

    Jetzt klappts thx 😉

    Verflixt, dafür tipp ich mir nen Wolf 🙄


Anmelden zum Antworten