Les bases de la programmation en C ++ pour les débutants

Travailler avec des chaînes localisées




premier, vous devez être en mesure de le faire avec les chaînes localisées - un caractère enregistrement constantes large caractères localisés et de les distinguer des lignes conventionnelles carboniser[]. Pour cette ligne est écrit Éliminatoires de la L avant:

Le résultat sera:

Faites attention, la longueur de chaîne (nombre caractères) dans ce cas, nettement moins, que le nombre octet alloué à la chaîne (votre système d'exploitation, leur attitude peut être différente de, Je montre sous Linux, mais il ne modifie pas la technique de programmation).

Dans une telle ligne près de avec un égal succès peuvent être des symboles de la diversité: langues différentes, symboles mathématiques spéciaux, commun le leurke désignation de l'alphabet grec (un, e, Je, Fr., p, l, fa, Oh ...), notes de musique, etc.. Comment avez-vous, évidemment, savoir, tout aussi bien comme une partie de chaînes de caractères larges, avec un égal succès, et peut répondre aux caractères de l'alphabet latin (ASCII table principale), avec chaque symbole tiendra également 2 ou 4 octet (selon les accords adoptés dans le système d'exploitation), contrairement à l'habitude 1 octet.

Nous effectuons un certain nombre d'opérations avec les lignes russes, mais en les (tandis que) sous forme traditionnelle tableaux carboniser:

effectuer:

il semblerait, que (presque) tout fonctionne précisément un manuel, et pourquoi nous avons besoin d'importantes chaînes localisées? mais il est trompeur illusion! Le point ici est, que certains fonctions traditionnelles en minuscules (strcat(), strcpy(), strdup(), strstr() et al.) renverra les résultats corrects. En effet, ils effectuent des opérations sur les octets, octet par octet, sans entrer dans la structure interne de caractères à copier.

Mais d'autres opérations (et faux résultat strlen() il a clairement points) ne fonctionnera pas correctement: strncpy(), strchr(), strsep(), strtok() et al. et ils vous créer un des résultats très inattendus, très difficile à interpréter. Regardezils comment fonctionne la chaîne octet inverse, et comment distinguer son travail sur les Anglais et ligne russe:

Il fonctionne si, et sans aucun doute pas, ce que vous vous attendiez à recevoir:

net cela conclut notre discussion sur la possibilité de représenter les lignes de tableaux traditionnels russophones carboniser[] et le traitement de leurs fonctions traditionnelles en minuscules, et complète cet examen sortie: py gagner avec des lignes russes en tant que tableau carboniser boîte seulement:

et). ou lorsque l'on utilise des constantes de chaîne inchangées, seulement comme une ligne pour leur entrée-sortie inchangé;

b). ou pour le traitement de leurs fonctions (bibliothèque ou leur propre), qui ne tiennent pas compte de la structure interne des caractères, sans entrer dans la est contenuil est temps, et opérer avec eux simplement comme une séquence d'octets sans signification.

en tout sinon correctJe travailler avec l'alphabet cyrillique disponible seulement comme un large éventail de caractères localisés wchar_t (avec l'achèvementm ligne large symbole nul L » 0′). Pour une représentation localisée des lignes de la bibliothèque C fournit large un ensemble de caractéristiques ligne, tout à fait semblable aux fonctions traditionnelles de minuscules, mais au lieu du préfixe str en leur nom préfixé par WCS: wcslen() au lieu de strlen(), wcsncpy() au lieu de strncpy() etc.

Voyons voir comment cela fonctionne sur l'exemple de:

Cette illustration est assez, pour voir les fonctions de manipulation directe des analogies avec des symboles wchar_t. la, qui a une certaine expérience de travail avec des chaînes carboniser sans effort Etalez larges cordes. locale Réglage de la langue (appel setlocale()) dispositifs O (terminal) - obligatoire, parce que le programme C / C ++ définit les paramètres régionaux par défaut “C” (età historiquement), ce qui permet la sortie seulement 128 caractères moins la moitié des caractères ASCII 8 bits.

Dans l'écriture illustré fonction définit les paramètres régionaux, utilisé dans le système d'exploitation par défaut - Je devine, que nous expérimentons dans le russophones le système installé. La nouvelle norme linguistique (C99) et introduit un nouveau format pour les fonctions de mise en forme de chaîne (printf(), sprintf()) - %ls, Cette chaînes de format wchar_t[].

Ten interne comme, Comme dans le cas des réseaux carboniser, convertit en C ++ de C, La bibliothèque C de introduit un analogue complet de la classe conteneur chaîne, mais contenant dans leur composition large des caractères localisés, et est connu sous le nom de la classe wstring:

Ici, la chaîne de sortie de caractères localisés (ws) il faut est émis vers le flux de sortie wcout (sens similaire cout, mais autre que cout).

Dans l'écriture illustré: lieu::global( lieu( “” ) ) - Ce paramètre de paramètres régionaux par défaut dans la manière OOP C de, semblable à, comme il a été démontré auparavant dans le mode de C.

lasondages IO chaînes de caractères large (à la borne ou à un fichier) séparée compliquée sujet, par conséquent un examen sera reporté à une seule note à ce sujet.

Bulletin de nouvelles leçons sur la programmation:

Travailler avec des chaînes localisées
3.5 (70%) 2 votes

Laisser un commentaire

Votre adresse email ne sera pas publiée. les champs requis sont indiqués *