Frage zu Strings (setw)
-
Hallo zusammen,
ich wollte eine Eingabe erstellen, bei der man nur eine maximales Anzahl von Zeichen eingeben kann. Dazu habe ich einfach dem Textfeld eine feste Breite zugewiesen. Nun dachte ich, dass bei einer Breite von n ich n-1 Zeichen schreiben kann, da das letzte Byte für das Stringende \0 genutzt wird. Anscheinend ist das aber nicht so. Hier ist mal der Code:string wort; cin >> setw(11)>> wort; cout << wort;Es werden aber genau 11 Zeichen ausgeben und nicht 10. Warum?
Vielen Dank
lg, freakC++
-
Ja, 11 (mehr oder weniger) sichtbare Zeichen. 0 gehört dann anscheinend nicht dazu.
-
Aber ich weiß, dass \0 auch ein Byte benötigt....
lg, freakC++
-
freakC++ schrieb:
Aber ich weiß, dass \0 auch ein Byte benötigt....
'\0' wird ja nicht mit ausgegeben sondern markiert nur das Ende des Strings.
-
Ausserdem spielt das terminierende Null bei std::string keine Rolle.
Simon
-
Ja, klar wird es nicht ausgegeben, aber es braucht trotzdem Speicherplatz.
Mmh..wo spielt es dann eine Rolle? Bei chars??
Vielen Dank
lg, freakC++
-
freakC++ schrieb:
Mmh..wo spielt es dann eine Rolle? Bei chars??
Bei c- strings.
Simon
-
Achso....das wusste ich nicht.
Vielen Dank
lg, freakC++