Funciones de los miembros std :: string length () y size ()

Estaba leyendo las respuestas para esta pregunta y descubrí que en realidad hay un método llamado length() para std::string (siempre utilicé size() ). ¿Hay alguna razón específica para tener este método en la clase std::string ? 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?

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

Ruby es exactamente el mismo, btw, que ofrece #length y #size como sinónimos para el número de elementos en matrices y hash (C ++ solo lo hace para cadenas).

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 tus dudas, @Naveen, mientras que los fanáticos de Perl ” Hay más de una forma de hacerlo “(o la syntax de SQL con un millón de” palabras de ruido “opcionales que dan innumerables formas sintácticas equivalentes para express un concepto) sin duda se quejan de que Ruby, y especialmente C ++, simplemente no van muy lejos suficiente para ofrecer tal redundancia sinónimo ;-).

longitud de la cadena == cuantos bits tiene esa cadena, tamaño == tamaño de esos bits, en cadenas ambos son iguales si el editor asigna tamaño de carácter es de 1 byte