Stehe vollkommen auf dem Schlauch



  • Ich habe gerade begonnen mich in C++ einzuarbeiten und gleich mal die erste Frage zu folgendem Code:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        cout << "Bitte gib deinen Namen ein!\n";
        char name;
        cin >> name;
        cout << "Hallo " << name << "!\n";
        return 0;
    }
    

    Der Code gibt bei mir bei der Ausführung in etwa folgendes aus:

    Bitte gib deinen Namen ein!
    Simon
    Hallo S!
    Bitte drücken Sie EINGABE um das Programm zu beenden

    Wieso wird der Name abgeschnitten?
    Danke für die Hilfe!



  • Du speichers nur ein einzelnes Zeichen. Mach dir was mit std::getline und std::string .



  • Danke, so geht's:

    #include <iostream>
    
    int main()
    {
        std::cout << "Bitte gib deinen Namen ein!\n";
        std::string name;
        std::getline (std::cin,name);
        std::cout << "Hallo " << name << "!\n";
        return 0;
    }
    

    Mir ner normalen Zahl funktioniert das aber doch mit

    int var; cin >> var
    

    ? Wieso geht es dann mit 'nem String nicht? 🙄



  • C-MinusMinus schrieb:

    Danke, so geht's:

    #include <iostream>
    
    int main()
    {
        std::cout << "Bitte gib deinen Namen ein!\n";
        std::string name;
        std::getline (std::cin,name);
        std::cout << "Hallo " << name << "!\n";
        return 0;
    }
    

    Mir ner normalen Zahl funktioniert das aber doch mit

    int var; cin >> var
    

    ? Wieso geht es dann mit 'nem String nicht? 🙄

    char = 1 Zeichen, genauso wie int = 1 Zahl. Verstehst du 😉



  • Mit std::string geht es auch - solange du damit zufrieden bist, daß die Eingabe nur bis zum ersten Leerzeichen verarbeitet wird.



  • Wie der Datentyp schon sagt, kann char nur ein Zeichen abspeichern.
    Wenn du eine Zeichenkette (eine Abfolge von verschiedenen Zeichen) speichern möchtest funktioniert das wie folgt.

    #include <iostream>
    #include <string> // Wird für die Stringfunktion benötigt
    
    int main() {
    
    std::string name;
    
    std::cout << "Bitte Namen eingeben: ";
    std::cin >> name;
    
    std::cout << "Dein Name lautet " << name << std::endl;
    
    }
    

    Grüße,
    Philipp



  • Der Unterschied zwischen dem Code von C-MinusMinus und Philipp1988 ist der Delimiter.


Log in to reply