"nichts" in Variable einlesen



  • Hallo,

    ist vielleicht eine dumme Frage, aber ich weiß nicht, nach was ich in meinem c++-Buch suchen soll.

    Ich habe folgendes Problem:
    Ich möchte eine Variable "eingabe" mit cin füllen. Anschließend möchte ich abfragen, ob etwas in der Variablen steht. Sollte dies nicht der Fall sein, möchte ich ihr einen Default-Wert übergeben. Das ganze habe ich mir in etwa so gedacht:

    cin>> eingabe;
    if (eingabe == "")   eingabe = "defaultwert";
    

    Nun kann ich in der Eingabeshell aber nicht nichts eingeben.
    Wenn ich nur die Enter-Taste drücke, erhalte ich solange Leerzeilen, bis ich eine Eingabe tätige. Erst dann läuft mein Programm weiter.

    Kann mir jemand helfen wie ich dies lösen könnte? Vielen Dank schon mal.



  • hi,

    #include <iostream.h>
    #include <string.h>
    
    int main()
    {
    	char eingabe[100];
    	cin.get(eingabe,99);
    
    	if(strlen(eingabe) == 0)
    		strcpy(eingabe, "default");
    
    	cout << endl << eingabe << endl;
    
    	return(0);
    }
    

    mfg



  • Nachtrag:
    Es ist aber meiner Meinung nach besser diese Variante zu verwenden:

    #include <iostream.h>
    #include <string.h>
    
    int main()
    {
    	char eingabe[100];
    
    	cin.getline(eingabe, sizeof(eingabe) - 1);
    
    	if(strlen(eingabe) == 0)
    		strcpy(eingabe, "default");
    
    	cout << endl << eingabe << endl;
    
    	return(0);
    }
    

    es wird einfach eine Zeile eingelesen. D.h bis das zeichen '\n' auftritt. Du kannst allternativ alls 3ten parameter ein anderes Zeichen bei cin.getline eingeben, welches als Einleseende dienen soll.

    mfg



  • Ich würde nachfolgende Lösung bevorzugen.

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        string eingabe;
    
        getline(cin, eingabe);
        if (eingabe.empty())
            eingabe = "default";
        cout << eingabe << endl;
    
        return(0);
    }
    


  • Dabei gibts keine Längenbeschränkung. 😉



  • Vielen Dank,

    Ihr habt mit sehr geholfen!


Anmelden zum Antworten