Namen einlesen in C++



  • Hallo.

    Wie lese ich in C++ einen Namen ein?

    Also in der Ausgabe sollte denn kommen:

    Name: "text" <---Wird eingegeben!
    Dein Name lautet "text"

    Wär super wenn ihr mir helfen könnt 🙂

    Mfg Max



  • include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
    string name;
    cout << "Name eingeben!" << endl;
    cin >> name;
    cout << "Name ist: " << name << endl;
    return 0;
    }
    


  • #include <iostream>
    
    int main()
    {
      char name[21];
      std::cout << "Bitte den Namen eingeben: ";
      std::cin.width(20);
      std::cin >> name;
      std::cout << "Ihr Name lautet: " << name;
    }
    


  • HelferInDerNot schrieb:

    #include <iostream>
    
    int main()
    {
      char name[21];
      std::cout << "Bitte den Namen eingeben: ";
      std::cin.width(20);
      std::cin >> name;
      std::cout << "Ihr Name lautet: " << name;
    }
    

    Versteh nicht wieso du hier char name[21]; verwendest.

    Könntest du mal erklären bitte?

    MfG
    Technology



  • Maxi schrieb:

    include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
    string name;
    cout << "Name eingeben!" << endl;
    cin >> name;
    cout << "Name ist: " << name << endl;
    return 0;
    }
    

    Das war schon keine schlechte Idee, nur würde ich getline benutzen damit er auch Leerzeichen erfasst.

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
    string name;
    cout << "Name eingeben!" << endl;
    getline(cin,name);
    cout << "Name ist: " << name << endl;
    return 0;
    }
    


  • technology schrieb:

    HelferInDerNot schrieb:

    #include <iostream>
    
    int main()
    {
      char name[21];
      std::cout << "Bitte den Namen eingeben: ";
      std::cin.width(21);
      std::cin >> name;
      std::cout << "Ihr Name lautet: " << name;
    }
    

    Versteh nicht wieso du hier char name[21]; verwendest.

    Könntest du mal erklären bitte?

    MfG
    Technology

    Na 20 für den Namen und 1 für die abschließende Null



  • also ich würds so machen

    #include <iostream>
    #include <string>
    
    int main(int argc, char** argv)
    {
        std::string name;
        std::cout << "Name eingeben!" << endl;
        std::cin >> name;
        std::cout << "Name ist: " << name << endl;
        return 0;
    }
    

    denn char* uda char[] sind C und in C++ verwendet man wenn möglich std::string.......



  • HelferInDerNot schrieb:

    technology schrieb:

    Versteh nicht wieso du hier char name[21]; verwendest.

    Könntest du mal erklären bitte?

    MfG
    Technology

    Na 20 für den Namen und 1 für die abschließende Null

    Und was machst du, wenn der User einen längeren Namen hat? cin überprüft nicht, ob hinter dem char* genug Platz ist für die Eingabe (-> undefined behaviour), deshalb nimmt man in C++ lieber std::string, die wachsen automatisch mit, wenn es notwendig wird.

    @shade: Dein Programm kam aber auch schon 😉



  • CStoll schrieb:

    Na 20 für den Namen und 1 für die abschließende Null

    Und was machst du, wenn der User einen längeren Namen hat? cin überprüft nicht, ob hinter dem char* genug Platz ist für die Eingabe (-> undefined behaviour), deshalb nimmt man in C++ lieber std::string, die wachsen automatisch mit, wenn es notwendig wird.[/quote]

    Anscheinend hast DU dir das Beispiel oben gar nicht angesehen. Stammt ja auch nur von einem Gast 🙄
    Außerdem rate ich einem Anfänger von std::string ab, man soll erstmal die Grundlagen lernen (hier eben Arrays), und sobald man dann OOP versteht kann man in die STL einsteigen.



  • Fachmann für Moderatoren schrieb:

    Anscheinend hast DU dir das Beispiel oben gar nicht angesehen. Stammt ja auch nur von einem Gast 🙄

    Ich will mich aber nicht in der Länge der Eingabe einschränken lassen.

    Außerdem rate ich einem Anfänger von std::string ab, man soll erstmal die Grundlagen lernen (hier eben Arrays), und sobald man dann OOP versteht kann man in die STL einsteigen.

    Und ich rate einem Anfänger zu std::string - in das rumgegurke mit Arrays und Zeigern kann man immer noch einsteigen, wenn man die Grundlagen begriffen hat.
    (oder wenn man der Meinung ist, von C++ auf C umsteigen zu müssen)



  • Erstmal danke für die Hilfe 🙂

    Wenn ich den Namen jetzt verkehrt wieder ausgeben möchte, verwende ich da besser Strings oder ein Array?

    Mfg Max



  • Ist eigentlich egal, das umkehren des Strings macht in beiden Versionen genausoviel Arbeit (string's haben keine eigene Methode dafür und Algorithmen wie reverse() und reverse_copy() ist es egal, ob sie mit char* oder string::iterator gefüttert werden).



  • Ich hab das jetzt mal so gelöst:

    #include <iostream>
    using namespace std;

    int main()
    {
    char name[255];
    cout << "Bitte den Namen eingeben: ",0;
    cin >> name;
    cout << "Ihr Name lautet: " << name <<endl;
    }

    Nur würd ich jetzt gern wissen, wie ich dieses Array umdrehen kann?

    Mfg Max



  • Wie gesagt, mit STL-Algorithmen:

    reverse(name,name+strlen(name));
    

    (dazu benötigst du noch die Header <algorithm> und <cstring>)

    Du kannst natürlich auch eine for-Schleife schreiben, die die Zeichen manuell vertauscht.



  • oder iteratoren ^^

    #include <algorithm>
    #include <string> //edit
    #include <iteratoren>
    #include <iostream>
    
    std::copy(name.rbegin(), name.rend(), std::ostream_iterator<std::string>(std::cout);
    

    Gg


Anmelden zum Antworten