2009-05-25 13 views
171

Estaba leyendo las respuestas para este question y encontré que en realidad hay un método llamado length() para cadenas (siempre utilicé size()). ¿Hay alguna razón específica para tener este método en la clase de cuerda? Leo tanto MSDN como CppRefernce y parecen indicar que no hay diferencia entre size() y length(). Si eso es así, ¿no está haciendo más confuso para el usuario de la clase?std :: string member() and size() member functions

Respuesta

226

Según el documentation, estos son solo sinónimos. size() está para ser coherente con otros contenedores STL (como vector, map, etc.) y length() debe ser coherente con la noción intuitiva de las cadenas de caracteres de la mayoría de las personas. La gente generalmente habla de una palabra, oración o párrafo longitud, no su tamaño, por lo que length() está ahí para hacer las cosas más legibles.

+7

acuerdo. Cuando escribo clases y funciones de plantilla, prefiero usar 'size()' (en caso de que alguna vez use clases que no sean cadenas), pero la mayoría de las veces uso 'length()' cuando trabajo con strings simples. – Marius

+1

No size() devuelve el tamaño de la cadena en la memoria (en bytes), mientras que length() devuelve el número de caracteres, que coinciden, ya que 1 char = 1 byte? –

+1

No. Son la misma función; incluso comparten documentación: http://en.cppreference.com/w/cpp/string/basic_string/size. – tgamblin

15

Rubí es lo mismo, por cierto, que ofrece tanto #length y #size como sinónimos para el número de elementos en arreglos y hashes (C++ sólo lo hace para cuerdas).

Los minimalistas y las personas que creen que "debería haber una, e idealmente solo una, forma obvia de hacerlo" (como recita el Zen de Python), estarán, en su mayoría, de acuerdo con sus dudas, @Naveen, mientras los fanáticos de Perl, "Hay más de una forma de hacerlo" (o la sintaxis de SQL con un millón de "palabras irrelevantes" opcionales que dan innumerables formas sintácticas equivalentes para expresar un concepto) sin duda se quejarán de que Ruby, y especialmente C++, simplemente se ponen Basta de ofrecer tal redundancia sinónimo ;-).

+8

En este caso es gratuito. La gramática y el uso de Perl le permiten expresar cosas usando el estilo que prefiera. Tener dos palabras diferentes para la misma cosa simplemente hace que sea difícil encontrar términos de búsqueda en Stackoverflow. –

-3

longitud de cadena == la cantidad de bits que tienen esa cadena, tamaño == tamaño de esos bits, En tanto cadenas son iguales si el editor asigna tamaño de carácter es de 1 byte

+0

respuesta incorrecta. Consulte la documentación vinculada en la respuesta aceptada. –

Cuestiones relacionadas