À propos des chaînes

Les fonctions de chaîne offrent aux applications la possibilité de copier, de comparer, de trier, de mettre en forme et de convertir des chaînes de caractères, ainsi que les moyens de déterminer le type de caractère de chaque caractère dans une chaîne. Toutes les fonctions de chaîne prennent en charge les jeux de caractères codés sur un octet, codés sur 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 général, cela implique un dépassement de mémoire tampon qui peut provoquer une attaque par déni de service contre votre application ou l’injection de code exécutable d’une personne malveillante. 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. Pour plus d’informations sur ces fonctions, consultez utilisation des fonctions strsafe. h.

Cette section décrit les rubriques suivantes.

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

De nombreuses fonctions de chaîne dupliquent ou améliorent les fonctions de chaîne familières de la bibliothèque Runtime C (CRT) 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 Windows String, fonction Fonction StrSafe
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 des versions ANSI de la fonction ou des 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 opèrent sur n’importe quel caractère d’un jeu de caractères. À l’aide de 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èrescodé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 dans une chaîne.
CharPrev Passe au 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 permettent de déterminer un caractère en fonction de la sémantique de la langue sélectionnée par l’utilisateur. Ces fonctions sont activées pour 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 pour les fonctions runtime C (CRT) standard. Comme mentionné précédemment, les fonctions StrSafe permettent une gestion plus sûre des chaînes et sont recommandées pour une meilleure sécurité pour votre application.

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

Ressources de chaînes

Une application qui gère des chaînes de caractères dans les ressources peut être traduite dans de nouveaux langages 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 relier l’application. En outre, l’utilisation de ressources de type 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 type chaîne et interprète les options de mise en forme qui peuvent être incorporées dans la chaîne.

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

Pour les ressources de type chaîne 16 bits, 255 caractères correspond à la longueur maximale. Pour les ressources de type chaîne 32 bits, 65535 caractères correspond à la longueur maximale.