Partager via


À propos des chaînes

Les fonctions de chaîne donnent aux applications les moyens de copier, comparer, trier, mettre en forme et convertir des chaînes de caractères, ainsi que les moyens de déterminer le type de caractère de chaque caractère d’une chaîne. Toutes les fonctions de chaîne prennent en charge les jeux de caractères codés sur un octet, deux octets et Unicode si ces jeux de caractères sont pris en charge par le système d’exploitation sur lequel l’application est exécutée.

Avertissement de sécurité : L’utilisation incorrecte des fonctions de chaîne peut entraîner des problèmes de sécurité pour votre application. En règle générale, cela implique un dépassement de mémoire tampon qui peut autoriser une attaque par déni de service contre votre application ou l’injection de code exécutable d’un attaquant. Les fonctions Strsafe permettent une gestion plus sûre des chaînes et sont recommandées pour une meilleure sécurité pour votre application. Pour plus d’informations sur ces fonctions, consultez Utilisation des fonctions Strsafe.h.

Cette section traite des rubriques suivantes.

Comparaison avec les fonctions de chaîne C Run-Time

De nombreuses fonctions de chaîne dupliquent ou améliorent les fonctions de chaîne familières de la bibliothèque run-time (CRT) C standard. La plupart des améliorations permettent aux fonctions de chaîne de fonctionner avec des jeux de caractères Unicode ou étendus. Le tableau suivant présente les fonctions CRT, les fonctions Windows (qui prennent en charge Unicode, contrairement aux fonctions CRT) et les fonctions StrSafe.

FONCTION DE CHAÎNE CRT Fonction de chaîne Windows StrSafe, fonction
strcat lstrcat
StringCchCat
StringCchCatEx
StringCbCat
StringCbCatEx
strcmp lstrcmp (aucune fonction équivalente)
strcpy lstrcpy
StringCchCopy
StringCchCopyEx
StringCbCopy
StringCbCopyEx
strlen lstrlen
StringCchLength
StringCbLength

 

La fonction strlen , par exemple, retourne toujours le nombre d’octets dans une chaîne, mais la fonction lstrlen retourne le nombre de valeurs TCHAR , qui fait référence aux octets pour les versions ANSI de la fonction ou aux valeurs WCHAR pour les versions Unicode.

Les fonctions de chaîne suivantes diffèrent des fonctions C standard telles que tolower et toupper en ce qu’elles fonctionnent sur n’importe quel caractère d’un jeu de caractères. En utilisant la fonction CharLower , par exemple, une application peut convertir un U majuscule avec un umlaut (Ü) en minuscules (ü). Pour plus d’informations sur les jeux de caractères, consultez Jeux de caractères codés sur un octet.

Fonction Description
CharLower Convertit un caractère ou une chaîne en minuscules.
CharLowerBuff Convertit une chaîne de caractères en minuscules.
CharNext Passe au caractère suivant d’une chaîne.
CharPrev Se déplace vers le caractère précédent dans une chaîne.
CharUpper Convertit un caractère ou une chaîne en majuscules.
CharUpperBuff Convertit une chaîne en majuscules.

 

Les fonctions de chaîne suivantes déterminent un caractère en fonction de la sémantique de la langue sélectionnée par l’utilisateur. Ces fonctions sont compatibles avec Unicode.

Fonction Description
IsCharAlpha Détermine si un caractère est alphabétique.
IsCharAlphaNumeric Détermine si un caractère est alphanumérique.
IsCharLower Détermine si un caractère est en minuscules.
IsCharUpper Détermine si un caractère est en majuscules.

 

Le tableau suivant présente les extensions Unicode des fonctions d’exécution C standard (CRT). Comme mentionné précédemment, les fonctions StrSafe permettent une gestion plus sécurisée des chaînes et sont recommandées pour une meilleure sécurité pour votre application.

Fonction CRT standard String, fonction StrSafe, fonction
sprintf wsprintf
StringCchPrintf
StringCchPrintfEx
StringCbPrintf
StringCbPrintfEx
vsprintf wvsprintf
StringCchVPrintf
StringCchVPrintfEx
StringCbVPrintf
StringCbVPrintfEx

 

Ressources de chaînes

Une application qui gère les chaînes de caractères dans les ressources peut être traduite dans de nouvelles langues avec un minimum d’effort. Au lieu de rechercher des chaînes dans les modules sources, vous pouvez simplement traduire les chaînes dans le fichier de ressources et ressocier l’application. En outre, l’utilisation de ressources de chaîne simplifie la création de versions Unicode et non Unicode de l’application à partir des mêmes fichiers sources.

La fonction LoadString charge une ressource de chaîne à partir du fichier exécutable d’une application. La fonction FormatMessage charge une ressource de chaîne et interprète les options de mise en forme qui peuvent être incorporées dans la chaîne.

Les ressources au format binaire sont stockées au format Unicode. Lors du chargement de ressources, les applications peuvent utiliser la version Unicode des fonctions de ressources (LoadStringW, par exemple) pour obtenir des ressources en tant que données Unicode.

Pour les ressources de chaîne 16 bits, 255 caractères est la longueur maximale. Pour les ressources de chaîne 32 bits, 65 535 caractères est la longueur maximale.