eine einfach komplexe Frage



  • Hallo, bin neu hier...

    1. char cName[50];
    2. cout << "Bitte deinen Namen eingeben : ";
    3. cin.getline(cName,50);
    4. cout<< sizeof (cName);
    5. cout<< "Hallo " << cName << " ! " << endl ;
    

    eine Frage:
    1. warum gibt er in Zeile 4 immer die 50 von Zeile 1 auf der Konsole aus, und nicht die reale Zahl der eingegebenen Buchstaben? Also, wenn ich nach Zeile 3 den Namen "Friedrich" eingebe, erwarte ich dort die Zahl 9.

    So aber sieht der Ausdruck aus:
    "Bitte deinen Namen eingeben : Friedrich
    50Hallo Friedrich ! "

    Das ist nicht, was ich möchte!

    Danke für die Richtung



  • cout<< strlen (cName);

    sizeof gibt die größe der variablen name an, das sind 50 bytes, egal wieviele buchstaben dadrin nutzdaten sind, wo die 0 kommt und wieviele daten hinter der 0 ignoriert werden.



  • Nebenbei bemerkt:

    C++ bietet einen äußerst angenehmen Typ der heißt
    sdt::string
    das ist eine Klasse, die zwar nicht perfekt ist, einem aber sehr viel arbeit abnimmt.
    dein Beispiel in "reinem" c++:

    string name;
     cout << "Bitte deinen Namen eingeben : ";
     cin  >> name;
     cout << name.length()<< endl;
     cout << "Hallo " << name << " ! " << endl ;
    

    Ich denke der Vorteil ist ersichtlich.
    nur nicht das #include <string> am anfang vergessen.
    auf die einzelnen Zeichen kann man trotzdem per [index] zugreifen


Anmelden zum Antworten