C++:
Calculando la longitud de una cadena
Cómo hacerlo:
C++ moderno nos ofrece opciones sencillas:
#include <iostream>
#include <string>
int main() {
std::string texto = "Hola Mundo";
std::cout << "La longitud de la cadena es: " << texto.length() << std::endl;
// También puedes usar texto.size()
std::cout << "La longitud usando size() es: " << texto.size() << std::endl;
return 0;
}
/* Salida:
La longitud de la cadena es: 10
La longitud usando size() es: 10
*/
Profundizando
Históricamente, las cadenas en C se manejaban como arrays de char
terminados en NULL
, y la función strlen()
de la biblioteca estándar de C se necesitaba para encontrar su longitud. En C++, std::string
maneja el tamaño internamente, haciendo que length()
y size()
sean opciones directas y seguras; ambas devuelven un size_t
, una representación sin signo del tamaño.
Existen alternativas como usar la función std::distance(begin(cadena), end(cadena))
para containers genéricos, pero para std::string
las funciones miembro son más convenientes.
La implementación interna de length
o size
en std::string
suele ser de complejidad constante O(1), ya que no recorrer la cadena, sino que retorna una variable interna que lleva la cuenta de la longitud.
Ver También
- Documentación oficial de
std::string::size
: https://en.cppreference.com/w/cpp/string/basic_string/size - Documentación oficial de
std::string::length
: https://en.cppreference.com/w/cpp/string/basic_string/length - Una discusión en Stack Overflow sobre
length()
vssize()
: https://stackoverflow.com/questions/905479/stdstringlength-and-stdstringsize-differences - La historia de las cadenas en C: https://en.wikipedia.org/wiki/C_string_handling