C++ Funciones de cadena: strcpy(), strcat(), strlen(), strcmp()

⚡ Resumen inteligente

C++ Las funciones de cadena como `strcpy`, `strcat`, `strlen` y `strcmp` permiten a los programas copiar, unir, medir y comparar texto. Este recurso explica qué es una cadena, cómo declarar cadenas al estilo de C y con `std::string`, acceder a sus valores y aplicar las funciones básicas de cadena con ejemplos.

  • 🔤 Definición básica: Una cadena es una secuencia de caracteres; una C++ string es un objeto de la clase std::string.
  • 🧱 Dos declaraciones: C++ Admite matrices de caracteres al estilo C terminadas por '\0' y el tipo de clase std::string, que es más seguro.
  • 📥 Acceso a valores: Las cadenas se leen e imprimen por su nombre, como se demuestra con matrices de caracteres y con std::string.
  • 🛠️ Funciones de cadena: strcpy copia, strcat concatena, strlen mide la longitud y strcmp compara dos cadenas.
  • 📦 Encabezado obligatorio: Las funciones de cadena de C se encuentran en el archivo de cabecera cstring, que debe incluirse antes de su uso.

C++ Funciones de cadena

¿Qué es una cadena?

Una cadena es una secuencia de caracteres. A C++ string es un objeto de la clase std::string. Los caracteres se almacenan como secuencias de bytes, permitiéndose el acceso a un único byte de carácter.

C++ Las cadenas asignan memoria dinámicamente. Se puede asignar más memoria a la cadena durante la ejecución si es necesario. Dado que no hay preasignación de memoria, no se desperdicia memoria. Podemos realizar diversas operaciones con cadenas, como comparación, concatenación, conversión, etc.

Declarar cadenas

C++ admite dos tipos de declaraciones de cadenas:

  • Cadena de caracteres estilo C
  • Tipo de clase de cadena

Cadena de caracteres estilo C

Este tipo de declaración de cadena se introdujo en el Lenguaje de programación C. C++ sigue siendo compatible. Se trata simplemente de una matriz unidimensional de caracteres terminada con un carácter nulo (\0). Una cadena terminada en nulo tiene los caracteres que la componen seguidos de un carácter nulo.

Considere la declaración de cadena que se proporciona a continuación:

char name[5] = {'J', 'o', 'h', 'n', '\0'};

La declaración anterior crea una cadena que forma la palabra John. La palabra tiene 4 caracteres, pero la cadena tiene un tamaño de 5. El espacio adicional permite almacenar el carácter nulo.

Usando la regla de inicialización de la matriz, podemos escribir la declaración anterior de la siguiente manera:

char name[] = "John";

Tenga en cuenta que no es necesario colocar el carácter nulo al final de la constante de cadena. C++ El compilador colocará automáticamente el '\0' al final de la cadena al inicializar la matriz.

std :: string

El C++ La biblioteca proporciona la clase string, que admite diversas operaciones con cadenas. Se escribe como std::string.

Para utilizar esta clase, primero debemos incluirla en nuestro espacio de trabajo utilizando el preprocesador #include como se muestra a continuación:

#include <string>

A continuación, podemos declarar nuestra cadena usando la palabra clave string. Por ejemplo:

string name = "John";

La declaración anterior creará una cadena llamada nombre para contener el valor John.

Accediendo a valores de cadena

In C++, podemos acceder a los valores de la cadena usando el nombre de la cadena. Por ejemplo:

#include <iostream>
using namespace std;
int main() {
	char name[5] = { 'J', 'o', 'h', 'n', '\0' };
	cout << "String value is: ";
	cout << name << endl;
	return 0;
}

Salida:

Accediendo a valores de cadena

Aquí hay una captura de pantalla del código:

Accediendo a valores de cadena

Code Explicación:

  1. Incluyendo el archivo de encabezado iostream en nuestro código. Nos permitirá leer y escribir en la consola.
  2. Incluyendo el espacio de nombres estándar para usar sus clases y funciones sin llamarlo.
  3. Llamada a la función main() dentro de la cual se debe agregar la lógica del programa. La llave { marca el inicio del cuerpo de la función main().
  4. Declarando una cadena de caracteres y dándole el nombre nombre. La cadena almacenará el valor John. El espacio extra almacenará el carácter nulo.
  5. Imprimiendo algún texto en la consola.
  6. Imprimiendo el valor de la cadena denominada nombre en la consola.
  7. La función main() debería devolver un valor si el programa funciona bien.
  8. Fin del cuerpo de la función main().

Aquí hay otro ejemplo usando el C++ clase de cadena estándar:

#include <iostream>
#include <string>
using namespace std;
int main() {

	string name = "Guru99";

	cout << "The name is : " << name << endl;

	return 0;
}

Salida:

Accediendo a valores de cadena

Aquí hay una captura de pantalla del código:

Accediendo a valores de cadena

Code Explicación:

  1. Incluyendo el archivo de encabezado iostream en nuestro código. Nos permitirá leer y escribir en la consola.
  2. Incluyendo la clase de cadena estándar en nuestro código.
  3. Incluyendo el espacio de nombres estándar para usar sus clases y funciones sin llamarlo.
  4. Llamada a la función main() dentro de la cual se debe agregar la lógica del programa. La llave { marca el inicio del cuerpo de la función main().
  5. Declarar una cadena y darle el nombre name. La cadena almacenará el valor. Guru99.
  6. Imprimiendo el valor del nombre de la cadena junto con algún texto en la consola.
  7. La función main() debería devolver un valor si el programa funciona bien.
  8. Fin del cuerpo de la función main().

Funciones de cadena en C++

A menudo querrás manipular cadenas. C++ proporciona una amplia gama de funciones que puede utilizar para ello. Estas funciones están definidas en el encabezado, por lo que debemos incluirlo en nuestro código para poder usar las funciones. Analicemos algunas:

strcpy ()

Esta es la función de copia de cadena. Copia una cadena en otra cadena.

Sintaxis:

strcpy(string1, string2);

Los dos parámetros de la función, string1 y string2, son cadenas de texto. La función copiará la cadena string2 en string1.

strcat ()

Esta es la función de concatenación de cadenas. Concatena cadenas.

Sintaxis:

strcat(string1, string2);

Los dos parámetros de la función, string1 y string2, son las cadenas que se van a concatenar. La función anterior concatenará la cadena string2 al final de la cadena string1.

strlen ()

Esta es la función de longitud de la cadena. Devuelve la longitud de la cadena que se le pasa como argumento.

Sintaxis:

strlen(string1);

El parámetro cadena1 es el nombre de la cadena cuya longitud se va a determinar. La función anterior devolverá la longitud de la cadena cadena1.

strcmp ()

Esta es la función de comparación de cadenas. Se utiliza para comparar cadenas.

Sintaxis:

strcmp(string1, string2);

La función anterior devolverá 0 si las cadenas string1 y string2 son similares, menor que 0 si string1 < string2 y mayor que 0 si string1 > string2.

Ejemplo:

El siguiente ejemplo demuestra cómo utilizar las funciones de cadena anteriores:

#include <iostream>
#include <cstring>
using namespace std;
int main() {

	char name1[10] = "Guru99";
	char name2[10] = "John";
	char name3[10];

	int len;
	strcpy(name3, name1);
	cout << "strcpy( name3, name1) : " << name3 << endl;

	strcat(name1, name2);
	cout << "strcat( name1, name2): " << name1 << endl;

	len = strlen(name1);
	cout << "strlen(name1) : " << len << endl;
	return 0;
}

Salida:

Funciones de cadena en C++

Aquí hay una captura de pantalla del código:

Funciones de cadena en C++

Code Explicación:

  1. Incluyendo el archivo de encabezado iostream en nuestro código. Nos permitirá leer y escribir en la consola.
  2. Incluyendo el estándar encabezado en nuestro código.
  3. Incluyendo el espacio de nombres estándar para usar sus clases y funciones sin llamarlo.
  4. Llamada a la función main() dentro de la cual se debe agregar la lógica del programa. La llave { marca el inicio del cuerpo de la función main().
  5. Declarar una cadena de 10 caracteres y darle el nombre name1. La cadena almacenará el valor. Guru99.
  6. Declarando una cadena de 10 caracteres y dándole el nombre nombre2. La cadena almacenará el valor John.
  7. Declarando una cadena de 10 caracteres y dándole el nombre nombre3.
  8. Declarando un variable entera llamado len.
  9. Copiando la cadena nombre1 en la cadena nombre3.
  10. Imprimir el valor de la cadena name3 junto con algún texto en la consola. Debería imprimir Guru99.
  11. Concatenando la cadena name2 al final de la cadena name1. El valor de name1 ahora es Guru99Juan.
  12. Imprimir el valor de la cadena name1 junto con algún texto en la consola. Debería imprimir Guru99Juan.
  13. Determinar la longitud de la cadena llamada name1 y asignar el valor de dicha longitud a la variable len.
  14. Imprimir el valor de la variable len junto con otro texto en la consola.
  15. La función main() debería devolver un valor si el programa funciona bien.
  16. Fin del cuerpo de la función main().

Preguntas Frecuentes

Sí. Los asistentes de IA pueden convertir matrices de caracteres a std::string, actualizar las funciones relacionadas y explicar las ventajas en materia de seguridad. Aun así, los desarrolladores deben revisar los cambios para detectar casos límite, tamaños de búfer y el comportamiento previsto.

Sí. Las herramientas de IA generan ejemplos resueltos, explican el comportamiento de `strcpy` y `strcat`, e indican los riesgos de desbordamiento de búfer. Esto acelera la comprensión, pero ejecutar el código uno mismo sigue siendo la mejor manera de confirmar su funcionamiento.

std::string gestiona la memoria dinámicamente y proporciona operaciones integradas como la concatenación y la comparación. Las cadenas de estilo C son matrices de caracteres fijas terminadas en '\0' que requieren gestión manual de la memoria y son más propensas a errores.

Pueden provocar desbordamientos de búfer si el array de destino es demasiado pequeño. Entre las alternativas más seguras se incluyen strncpy, strncat o simplemente el uso de operaciones std::string, que gestionan la memoria automáticamente y reducen estos riesgos.

Resumir este post con: