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
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.
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 ;-).
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. –
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
respuesta incorrecta. Consulte la documentación vinculada en la respuesta aceptada. –
- 1. std :: string :: longitud() vs. std :: string :: size()
- 2. std :: map of member function punteros?
- 3. sizeof a struct member
- 4. Uso de la palabra clave "estática" para limitar el acceso en C++ Member Functions
- 5. ¿Qué objetos son adecuados para Add-Member?
- 6. Cómo utilizar PowerShell cmdlet Get-Member
- 7. D Analógico a C++ member-function-pointers, no necesariamente delegados
- 8. Descripción de los operadores de Pointer-to-Member
- 9. ¿Por qué BindingList (Of T) no tiene AddRange Member?
- 10. Conectar Sphinx autodoc-skip-member a mi función
- 11. std :: strings's capacity(), reserve() & resize() functions
- 12. fit dataGridView size to row's and columns's total size
- 13. ¿Qué son los Pointer-to-Member -> * y. * Operadores en C++?
- 14. ¿Cuál es la diferencia entre los operadores IN y MEMBER OF JPQL?
- 15. Buscando una estructura similar a una matriz eficiente que admita "replace-one-member" y "append"
- 16. Obteniendo el valor de retorno de una función boost :: threaded member?
- 17. SWIG: Cómo ajustar std :: string & (std :: string pasado por referencia)
- 18. Struct Array Initialization and String Literals
- 19. operator std :: string() const?
- 20. std :: string vs. char *
- 21. std :: vector <std::string> crash
- 22. Rendimiento std :: strstr vs std :: string :: encontrar
- 23. Cómo convertir System :: String^en std :: string?
- 24. Desambulización de llamadas a funciones que toman std :: functions
- 25. Convierte uint64_t en std :: string
- 26. C++ std :: string to boolean
- 27. Cómo invertir una std :: string?
- 28. convertir std :: string a basic_ostream?
- 29. convertir int a std :: string
- 30. Cython C++ y std :: string
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
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? –
No. Son la misma función; incluso comparten documentación: http://en.cppreference.com/w/cpp/string/basic_string/size. – tgamblin