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