Encontrar la longitud de una cadena en C++

Jinku Hu 12 octubre 2023
  1. Utilice la función length para encontrar la longitud de una cadena en C++
  2. Utilice la función size para encontrar la longitud de una cadena en C++
  3. Utilice el bucle while para encontrar la longitud de una cadena en C++
  4. Utilice la función std::strlen para encontrar la longitud de una cadena en C++
Encontrar la longitud de una cadena en C++

Este artículo explicará varios métodos de cómo encontrar la longitud de una cadena en C++.

Utilice la función length para encontrar la longitud de una cadena en C++

La biblioteca estándar de C++ proporciona la clase std::basic_string para aumentar las secuencias tipo char e implementar una estructura genérica para almacenar y manipular dichos datos. Aunque, la mayoría de la gente está más familiarizada con el tipo std::string que es en sí mismo un alias de tipo para std::basic_string<char>. std::string proporciona una función incorporada de length para recuperar la longitud de la secuencia char almacenada.

#include <cstring>
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[]) {
  string str1 = "this is random string oiwaoj";

  cout << "string: " << str1 << endl;
  cout << "length: " << str1.length() << endl;

  exit(EXIT_SUCCESS);
}

Producción :

string: this is random string oiwaoj
length: 28

Utilice la función size para encontrar la longitud de una cadena en C++

Otra función incorporada incluida en la clase std::string es size, que se comporta de manera similar al método anterior. No toma argumentos y devuelve el número de elementos char en el objeto de cadena.

#include <cstring>
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[]) {
  string str1 = "this is random string oiwaoj";

  cout << "string: " << str1 << endl;
  cout << "length: " << str1.size() << endl;

  exit(EXIT_SUCCESS);
}

Producción :

string: this is random string oiwaoj
length: 28

Utilice el bucle while para encontrar la longitud de una cadena en C++

Alternativamente, uno puede implementar su propia función para calcular la longitud de la cadena. En este caso, utilizamos el bucle while para recorrer la cadena como una secuencia char e incrementar el contador en uno en cada iteración. Observe que la función toma char como argumento, y se llama al método c_str para recuperar este puntero en la función principal. El bucle se detiene cuando el valor del puntero desreferenciado es igual a 0, y la implementación de la cadena terminada en nulo lo garantiza.

#include <cstring>
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

size_t lengthOfString(const char *s) {
  size_t size = 0;

  while (*s) {
    size += 1;
    s += 1;
  }

  return size;
}

int main(int argc, char *argv[]) {
  string str1 = "this is random string oiwaoj";

  cout << "string: " << str1 << endl;
  cout << "length: " << lengthOfString(str1.c_str()) << endl;

  exit(EXIT_SUCCESS);
}

Producción :

string: this is random string oiwaoj
length: 28

Utilice la función std::strlen para encontrar la longitud de una cadena en C++

Por último, se puede recurrir a la función de biblioteca de cadenas de C de la vieja escuela strlen, que toma un único argumento const char* como nuestra función definida a medida: lengthOfString. Estos dos últimos métodos pueden ser defectuosos cuando se llaman en secuencias char que no terminan con un byte nulo, ya que podrían acceder a memoria fuera de rango durante el recorrido.

#include <cstring>
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[]) {
  string str1 = "this is random string oiwaoj";

  cout << "string: " << str1 << endl;
  cout << "length: " << std::strlen(str1.c_str()) << endl;

  exit(EXIT_SUCCESS);
}

Producción :

string: this is random string oiwaoj
length: 28
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - C++ String