Verständnisfrage zu '0'
-
Funktioniert "strlen" gleich wie "VAR.length"?
-
beides gibt die länge der Zeichenkette zurück.
bei char[] muss man eben strlen verwenden.
bei string muss man length (glaub size gibts sogar auch noch)^^
-
OK, alles klar!
aber eigentlich trotzdem nicht logisch, denn "strlen" = "string length"... ^^
-
wieso nicht logisch oO ?
string, zu deutsch zeichenkette
strlen, länge der zeichenkette
-
Miness schrieb:
Funktioniert "strlen" gleich wie "VAR.length"?
Nein. strlen arbeitet mit nullterminierten char[]-Arrays und zählt die Anzahl der Zeichen bis zur 0. x.length() ist eine Member-Funktion. std::string und char x[...] sind nicht dasselbe.
-
@Dweb: Ja, schon. Aber auf den ersten Blick nicht logisch, da "string" ein anderer Datentyp ist (und string natürlich nicht gleich char ist).
@Baby Yaga: Ja, das hat ja Dweb bereits oben schon erläutert. ^^
-
Vor allem zählt strlen die Zeichen brav nach, während fast alle std::string-Implementationen über die Länge des Strings Buch führen und length() dann nur noch die gespeicherte Länge zurückgeben muss.
-
;Athar schrieb:
Vor allem zählt strlen die Zeichen brav nach, während fast alle std::string-Implementationen über die Länge des Strings Buch führen und length() dann nur noch die gespeicherte Länge zurückgeben muss.
Das kannst Du nicht pauschalisieren. Ob length() einen gespeicherten Wert nimmt, oder jedesmal zählt, ist ebenfalls nicht festgelegt.
-
Baba Yaga schrieb:
Das kannst Du nicht pauschalisieren. Ob length() einen gespeicherten Wert nimmt, oder jedesmal zählt, ist ebenfalls nicht festgelegt.
Deswegen ja "fast alle".
-
Ein std::string wird wahrscheinlich nicht 4 Bytes groß sein, weil da steht ja mindestens ein char*(4 Byte) drin, ein paar Variablen und ein Pointer auf das vtable(da sind die Pointer auf die Funktionen drin).