Différences de fonction de chaîne
Cette rubrique décrit les différences entre les fonctions de chaîne utilisées pour gérer les informations Unicode et les jeux de caractères. ces fonctions ont à la fois des implémentations de pages de codes unicode et Windows pour prendre en charge les paramètres de page de codes unicode et Windows.
Les fonctions de chaîne suivantes ne requièrent pas de commentaire spécial. leurs implémentations Unicode et Windows page de codes fonctionnent de manière identique.
- CharNext
- CharPrev
- StringCchCat, StringCchCatEx
- StringCchCopy, StringCchCopyEx
- StrCbLength, StrCchLength
la valeur de longueur récupérée par l’une des fonctions de longueur de chaîne est toujours basée sur la largeur de caractère normale : 8 bits pour les pages de codes Windows, 16 bits pour Unicode. Cette valeur est souvent appelée « nombre de caractères ». ce terme est strictement correct, car Windows pages de codes qui utilisent des jeux de caractères codés sur deux octets (dbcs) ont des caractères à pleine chasse qui sont réellement représentés par deux octets consécutifs. Une situation similaire se produit pour les substituts en Unicode.
Les fonctions de chaîne suivantes sont sensibles aux paramètres régionaux du thread actuel, dérivées de la langue sélectionnée par l’utilisateur dans le panneau de configuration. Les fonctions lstrcmp et lstrcmpi n’effectuent pas de comparaisons d’octets comme leurs namesakes ANSI, par exemple, strcmp. Au lieu de cela, ils comparent les chaînes en fonction des règles des paramètres régionaux.
les fonctions suivantes effectuent une conversion entre le jeu de caractères OEM et la page de codes ou Unicode actuelle Windows, selon la version utilisée :
Les fonctions d’impression, par exemple StringCbPrintf, prennent en charge Unicode en fournissant les types de données nouveaux et modifiés suivants dans leurs spécifications de format. Ces spécifications de format affectent la manière dont les fonctions interprètent le paramètre d’entrée correspondant.
| Spécification de format | type de données pour Windows version de la page de codes | Type de données pour la version Unicode |
|---|---|---|
| c | CHAR | WCHAR |
| C | WCHAR | CHAR |
| HC, hC | CHAR | CHAR |
| HS, hS | LPSTR | LPSTR |
| LC, lC | WCHAR | WCHAR |
| LS, lS | LPWSTR | LPWSTR |
| s | LPSTR | LPWSTR |
| S | LPWSTR | LPSTR |
Le type de données du texte de sortie dépend toujours de la version de la fonction. lorsque le type de données du paramètre d’entrée et le type de données du texte de sortie ne correspondent pas, la fonction print effectue une conversion d’Unicode vers la page de codes Windows actuelle, ou vice versa, selon les besoins.
Pour la version Unicode des fonctions d’impression, la chaîne de format est Unicode, comme le texte de sortie.
Attention
Une mauvaise gestion de la mémoire tampon est impliquée dans de nombreux problèmes de sécurité qui impliquent des dépassements de mémoire tampon. Consultez référence de strsafe. h. Les fonctions définies dans strsafe. h fournissent un traitement supplémentaire pour la gestion correcte de la mémoire tampon dans votre code. pour cette raison, ils sont destinés à remplacer leurs équivalents C/C++ intégrés, ainsi que les implémentations spécifiques de Microsoft Windows. Pour plus d’informations, consultez Considérations sur la sécurité : fonctionnalités internationales.