27/09/2000
La librería <cstring> en C++ es una herramienta fundamental para la manipulación de cadenas de estilo C. Esta librería, heredada de <string.h> en C, proporciona una serie de funciones eficientes para realizar diversas operaciones con strings.
Incluir la librería
Para utilizar las funciones de <cstring>, debes incluir el archivo de encabezado en tu código C++ utilizando la directiva de preprocesador #include :
#include <cstring>Funciones principales de
La librería <cstring> ofrece una amplia gama de funciones para la manipulación de cadenas. A continuación, se detallan algunas de las más utilizadas:
| Función | Descripción |
|---|---|
| strlen() | Devuelve la longitud de una cadena. |
| strcpy() | Copia una cadena en otra. |
| strncpy() | Copia los primeros n caracteres de una cadena en otra. |
| strcat() | Concatena dos cadenas. |
| strncat() | Concatena los primeros n caracteres de una cadena a otra. |
| strcmp() | Compara dos cadenas. |
| strncmp() | Compara los primeros n caracteres de dos cadenas. |
| strchr() | Busca la primera ocurrencia de un carácter dado en una cadena. |
| strrchr() | Busca la última ocurrencia de un carácter dado en una cadena. |
| strstr() | Busca una subcadena dentro de una cadena. |
| strcspn() | Devuelve la longitud de la porción inicial de una cadena que no contiene ningún carácter de otra cadena. |
| strspn() | Devuelve la longitud de la porción inicial de una cadena que contiene solo caracteres de otra cadena. |
| strpbrk() | Busca la primera ocurrencia de cualquier carácter de una cadena dentro de otra cadena. |
| strtok() | Divide una cadena en tokens utilizando un delimitador. |
| memset() | Inicializa un bloque de memoria con un carácter dado. |
| memcmp() | Compara dos bloques de memoria. |
| memcpy() | Copia un bloque de memoria en otro. |
| memmove() | Mueve un bloque de memoria a otro, manejando correctamente las superposiciones. |
| memchr() | Busca un carácter dado en un bloque de memoria. |
Ejemplo de uso de strlen() y strcat():
#include <cstring>#include <iostream>using namespace std;int main() { char nombre[20] = "David "; char apellido[20] = "Lauren"; cout << "Antes de la concatenación" << endl; cout << "\tNombre: " << nombre << endl; cout << "\tLongitud: " << strlen(nombre) << endl; strcat(nombre, apellido); cout << "Después de la concatenación" << endl; cout << "\tNombre: " << nombre << endl; cout << "\tLongitud: " << strlen(nombre) << endl; return 0;}Ejemplo de uso de strcpy() y strcat():
#include <iostream>#include <cstring>using namespace std;int main() { char str1[20] = "Geeks"; char str2[20] = "gfg"; char str3[20] = "GeeksforGeeks"; cout << "Longitud de str1: " << strlen(str1) << endl; cout << "str1 antes de la concatenación: " << str1 << endl; strcat(str1, str2); cout << "str1 después de la concatenación: " << str1 << endl; cout << "str1 antes de la copia: " << str1 << endl; strcpy(str1, str3); cout << "str1 después de la copia: " << str1 << endl; return 0;}<cstring> vs. <string>
Es importante diferenciar <cstring> de la librería <string>, que trabaja con cadenas de estilo C++. La principal diferencia radica en la gestión de memoria y la seguridad.
| Característica | <cstring> | <string> |
|---|---|---|
| Tipo de dato | Arreglos de caracteres (C-style strings) | Objetos de la clase std::string |
| Gestión de memoria | Manual, requiere manejo cuidadoso para evitar desbordamientos de búfer. | Automática, gestionada por la clase std::string . Más segura. |
| Seguridad | Menos segura, propenso a errores si no se maneja correctamente. | Más segura, previene errores comunes como desbordamientos de búfer. |
| Eficiencia | Generalmente más eficiente en términos de velocidad y consumo de memoria. | Menos eficiente que <cstring> en algunos casos. |
Consultas habituales
¿Debo usar <cstring> o <string> ?
La elección entre <cstring> y <string> depende del contexto. Si necesitas velocidad y control preciso sobre la memoria, <cstring> puede ser una buena opción, pero requiere mayor cuidado para evitar errores. Si la seguridad y la facilidad de uso son prioridades, <string> es la mejor alternativa.
¿Cuál es la diferencia entre <cstring> y <string.h> ?
<cstring> es la versión C++ de <string.h>. <string.h> es compatible con C y C++, pero <cstring> es la opción preferida en C++ por su mejor integración con el espacio de nombres std.
¿Debo usar <cstring> o <string.h> ?
En C++, <cstring> es la opción recomendada. <string.h> debería utilizarse solo si se requiere compatibilidad con código C.

La librería <cstring> es una herramienta poderosa y versátil para la manipulación de cadenas en C++, pero es crucial comprender sus limitaciones y las ventajas de <string> para tomar la decisión correcta en cada situación. Una comprensión profunda de ambas librerías te permitirá escribir código más eficiente y seguro.
Si quieres conocer otros artículos parecidos a Libreríaen c++ puedes visitar la categoría Libros y Librerías.
