ich die Antworten für diese question las und fand, dass es tatsächlich Methode length() für Strings genannt ist (ich immer verwendete Größe()). Gibt es einen bestimmten Grund für diese Methode in der String-Klasse? Ich lese sowohl MSDN als auch CppReference und sie scheinen anzuzeigen, dass es keinen Unterschied zwischen size() und length() gibt. Wenn das so ist, macht es nicht mehr verwirrend für den Benutzer der Klasse?std :: string length() und size() Member-Funktionen
Antwort
Gemäß der documentation, das sind nur Synonyme. size()
soll mit anderen STL-Containern konsistent sein (wie vector
, map
, usw.) und length()
ist konsistent mit der intuitiven Vorstellung von Zeichenfolgen der meisten Menschen. Leute sprechen normalerweise über ein Wort, einen Satz oder einen Absatz Länge, nicht seine Größe, also ist length()
dort, Sachen besser lesbar zu machen.
Rubys genau das gleiche, btw, bietet sowohl #length
und#size
als Synonyme für die Anzahl der Elemente in Arrays und Hashes (C++ nur, dass es für Strings).
Minimalists und Leute, die glauben "es sollte einen, und idealerweise nur einen, offensichtlichen Weg geben, es zu tun" (wie der Zen von Python sagt), wird, denke ich, hauptsächlich mit deinen Zweifeln, @ Naveen, übereinstimmen Fans von Perls "Es gibt mehr als einen Weg, es zu tun" (oder SQL-Syntax mit einem Bazillion optional "Noise-Wörter" zig verschiedene identisch syntaktische Formen zu geben, um ein Konzept auszudrücken) wird sich zweifellos beschweren, dass Ruby, und insbesondere C++, einfach nicht Geh nicht weit genug, um eine solche synonymische Redundanz anzubieten ;-).
In diesem Fall ist es kostenlos. Perls Grammatik und Verwendung ermöglicht es Ihnen, Dinge mit dem von Ihnen bevorzugten Stil auszudrücken. Zwei verschiedene Wörter für dasselbe zu haben, macht es nur schwer, in Stackoverflow Suchbegriffe zu finden. –
Länge der Zeichenfolge ==, wie viele Bits, die Zeichenfolge mit, Größe == Größe dieser Bits, In Strings sind beide gleich, wenn der Editor Größe von Zeichen zuordnet ist 1 Byte
falsche Antwort. Siehe Dokumentation in der akzeptierten Antwort verlinkt. –
- 1. std :: u16string, std :: u32string, std :: string, length(), size(), codepoints und zeichen
- 2. Wie funktioniert die Funktion std :: string length()?
- 3. Unterschied zwischen @Size, @Length und @Column (Länge = Wert)
- 4. STL String :: length() Speicherzugriffsfehler
- 5. Was ist der Unterschied zwischen A. length und A.heap-size?
- 6. Std :: String und Std :: Map-Operationen auf Unicode-String
- 7. Weird std :: string :: size() in einer for-Schleife
- 8. Unterschied zwischen Std: String und Std :: String
- 9. boost :: mpl :: string size Fehlermeldungen
- 10. Limit String Length
- 11. warum string length -1
- 12. Sind die Memberfunktionen von std :: wstring_convert thread sicher?
- 13. Was gibt std :: match_results :: size zurück?
- 14. count vs length vs size in einer Sammlung
- 15. Falsches Verhalten von size() und() in String-Klasse
- 16. Ist lodash _.size() schneller als JS length property?
- 17. std :: string und std :: ios :: binary
- 18. C++ std :: vector :: size() ändert seinen Zustand
- 19. Warum ist std :: bitset :: size nicht-statisch
- 20. Lesen std :: string aus Binärdatei
- 21. Vergleich zwischen Std: String und C-String
- 22. std :: string :: c_str() und Provisorien
- 23. Reuse std :: string und std :: istream_iterator in Schleife
- 24. Vorlagen auf Memberfunktionen verwalten
- 25. Iterator-Invalidierung durch `std :: string :: begin()`/`std :: string :: end()`?
- 26. Python: binascii.a2b_hex gibt "Odd-length string"
- 27. Zero-length string wird von String # split zurückgegeben
- 28. Schreiben einen Speicherpuffer std :: string
- 29. Wie CString und :: Std :: string :: std :: wstring miteinander zu konvertieren?
- 30. RSA Signature Size Mismatch
Einverstanden. Wenn ich Template-Klassen und -Funktionen schreibe, verwende ich lieber 'size()' (falls ich jemals Nicht-String-Klassen verwende), aber meistens benutze 'length()', wenn ich mit einfachen Strings arbeite. – Marius
Gibt size() nicht die Größe der Zeichenfolge im Speicher zurück (in Bytes), während length() die Anzahl der Zeichen zurückgibt, die zufällig zusammenfallen, seit 1 char = 1 Byte? –
Nein. Sie sind die gleiche Funktion; Sie teilen sogar die Dokumentation: http://en.cppreference.com/w/cpp/string/basic_string/size. – tgamblin