Comment faire de la place pour de grandes chaînes en C ++

Le programmateur Le C est souvent nécessaire pour manipuler des chaînes de caractères larges. La bibliothèque standard C ++ inclut des fonctions pour gérer les chaînes de caractères étendus. Quelques-uns de ces fonctions sont répertoriées dans ce tableau.

Larges fonctions de chaîne de manutention
NomOpération
int wcslen (chaîne)Retourne le nombre de caractères larges dans une chaîne, notincluding le nul final.
wchar_t * wcscpy (cible, source)Des copies de la source grande chaîne dans un tableau cible.
wchar_t * wcscat (cible, source)Concatène la source chaîne large sur l'extrémité de la chaîne de targetwide.
wchar_t * wcsncpy (objectifs, la source, n)Copie une chaîne étendue jusqu'à ncaractères de la chaîne de source dans un tableau cible.
wchar_t * wcsncat (objectifs, la source, n)Concatène la chaîne de source sur l'extrémité de la ou targetstring n caractères, selon comesfirst.
wchar_t * wcsstr (chaîne, motif)Trouve l'adresse de la première occurrence de motif dans un string.Returns null si motif est introuvable.
int wcscmp (source1, source2)Compare deux chaînes de large. Renvoie -1 si source1 survient avant source2 dans le dictionnaire et 1 si later.Returns 0 si les deux chaînes correspondent exactement.
int wcsncmp (source1, source2, n)Compare le premier n large charactersin deux chaînes étendues.

Rappelez-vous que les caractères larges sont utilisés pour les applications qui doivent soutenir les langues étrangères, où un maigre 255 personnages différents peuvent ne pas être suffisant.

Le tableau suivant montre une version de caractère large de la Concatenate programme:

// ConcatenateWide - concaténer deux chaînes étendues // avec un "-" dans le milieu en utilisant des routines bibliothèque # include #comprendre #comprendre using namespace main (int nNumberofArgs, char * pszArgs []) {// lu première chaîne de std-int ... wchar_t wszString1 [260] -cout lt; lt; "Saisissez la chaîne n ° 1:" - wcin.getline (wszString1, 128) - // ... maintenant la deuxième chaîne ... wchar_t wszString2 [128] -cout lt; lt; "Saisissez la chaîne n ° 2:" - wcin.getline (wszString2, 128) - // maintenant virer le second sur la fin de la première // avec un tiret dans betweenwcsncat (wszString1, L "-", 260) -wcsncat (wszString1 , wszString2, 260) -wcout lt; lt; L " n" lt; lt; wszString1 lt; lt; endl - // attendre utilisateur est prêt avant le programme // mettre fin pour permettre à l'utilisateur de voir le resultscout de programme lt; lt; "Appuyez sur Entrée pour continuer ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - retourner 0-}



Le large programme de chaîne de caractères ressemble à son seul octet chaîne de caractères cousine sauf pour les différences suivantes:

  • Les variables sont déclarées wchar_t plutôt que omble chevalier.

  • Caractères constants et chaînes constantes apparaissent précédés par un L, comme dans L “ Ceci est une chaîne de large ” ;.

  • Les objets WCIN et wcout sont utilisés à la place du cin et cout pour l'entrée et la sortie.

  • La WCS # 133- fonctions apparaissent à la place de l'étroit str # 133- fonctions.

La sortie à partir de ConcatenateWide semble identique à celle de la tèrebasé Concatenate programme à ceux qui font la plupart de leur entrée / sortie dans les langues européennes. Le thème de l'écriture de programmes capable de gérer plusieurs langues avec des alphabets différents et des règles de grammaire est connue comme localisation.

ANSI C ++ comprend un type chaîne conçu pour rendre plus facile de manipuler des chaînes de texte.


» » » » Comment faire de la place pour de grandes chaînes en C ++