Acerca de las cadenas
Las funciones de cadena proporcionan a las aplicaciones los medios para copiar, comparar, ordenar, formatear y convertir cadenas de caracteres, así como los medios para determinar el tipo de carácter de cada carácter de una cadena. Todas las funciones de cadena admiten los juegos de caracteres un byte, doble byte y Unicode si el sistema operativo en el que se ejecuta la aplicación admite estos juegos de caracteres.
Advertencia de seguridad: El uso incorrecto de las funciones de cadena puede causar problemas de seguridad para la aplicación. Normalmente, esto implica una saturación del búfer que puede permitir un ataque de denegación de servicio contra la aplicación o la inserción de código ejecutable de un atacante. Las funciones Strsafe permiten el control más seguro de las cadenas y se recomiendan para mejorar la seguridad de la aplicación. Para obtener más información sobre estas funciones, vea Uso de las funciones Strsafe.h.
En esta sección se describen los temas siguientes.
Comparación con las funciones de cadena de C Run-Time
Muchas funciones de cadena duplican o mejoran las funciones de cadena conocidas de la biblioteca estándar en tiempo de ejecución de C (CRT). Muchas de las mejoras permiten que las funciones de cadena funcionen con unicode o conjuntos de caracteres extendidos. En la tabla siguiente se muestran las funciones de CRT, las funciones de Windows (que admiten Unicode, a diferencia de las funciones de CRT) y las funciones StrSafe.
Función de cadena de CRT | Función String de Windows | Función StrSafe |
---|---|---|
strcat | lstrcat | |
strcmp | lstrcmp | (sin función equivalente) |
strcpy | lstrcpy | |
strlen | lstrlen |
La función strlen , por ejemplo, siempre devuelve el número de bytes de una cadena, pero la función lstrlen devuelve el número de valores TCHAR , que hace referencia a bytes para las versiones ANSI de la función o valores WCHAR para las versiones De Unicode.
Las siguientes funciones de cadena difieren de las funciones estándar de C, como tolower y toupper en que funcionan en cualquier carácter de un juego de caracteres. Mediante el uso de la función CharLower , por ejemplo, una aplicación puede convertir una U mayúscula con una umlaut (Ü) en minúsculas (ü). Para obtener más información sobre los juegos de caracteres, vea Juegos de caracteres de un solo byte.
Función | Descripción |
---|---|
CharLower | Convierte un carácter o una cadena en minúsculas. |
CharLowerBuff | Convierte una cadena de caracteres en minúsculas. |
CharNext | Se mueve al siguiente carácter de una cadena. |
CharPrev | Se mueve al carácter anterior en una cadena. |
CharUpper | Convierte un carácter o una cadena en mayúsculas. |
CharUpperBuff | Convierte una cadena a mayúsculas. |
Las siguientes funciones de cadena toman determinaciones sobre un carácter en función de la semántica del idioma seleccionado por el usuario. Estas funciones están habilitadas para Unicode.
Función | Descripción |
---|---|
IsCharAlpha | Determina si un carácter es alfabético. |
IsCharAlphaNumeric | Determina si un carácter es alfanumérico. |
IsCharLower | Determina si un carácter está en minúsculas. |
IsCharUpper | Determina si un carácter está en mayúsculas. |
En la tabla siguiente se muestran las extensiones Unicode a las funciones estándar en tiempo de ejecución de C (CRT). Como se mencionó anteriormente, las funciones StrSafe permiten un control más seguro de las cadenas y se recomiendan para mejorar la seguridad de la aplicación.
Función CRT estándar | Función String | Función StrSafe |
---|---|---|
sprintf | wsprintf | |
vsprintf | wvsprintf |
Recursos de cadena
Una aplicación que mantiene cadenas de caracteres en los recursos se puede traducir a nuevos idiomas con un esfuerzo mínimo. En lugar de buscar cadenas en los módulos de origen, puede simplemente traducir las cadenas en el archivo de recursos y volver a vincular la aplicación. Además, el uso de recursos de cadena simplifica la creación de versiones Unicode y no Unicode de la aplicación a partir de los mismos archivos de origen.
La función LoadString carga un recurso de cadena desde el archivo ejecutable de una aplicación. La función FormatMessage carga un recurso de cadena e interpreta las opciones de formato que se pueden incrustar en la cadena.
Los recursos en formato binario se almacenan en formato Unicode. Al cargar recursos, las aplicaciones pueden usar la versión Unicode de las funciones de recursos (LoadStringW, por ejemplo) para obtener recursos como datos Unicode.
Para los recursos de cadena de 16 bits, 255 caracteres es la longitud máxima. Para los recursos de cadena de 32 bits, 65535 caracteres es la longitud máxima.