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