Como Make Room for Strings largas em C ++

programador C ++ é muitas vezes necessária para manipular cadeias de caracteres largos. A biblioteca padrão C ++ inclui funções para lidar com cadeias de caracteres largos. Algumas dessas funções estão listadas nesta tabela.

Funções de grande manipulação de strings
NomeOperação
int wcslen (string)Retorna o número de caracteres de largura em uma corda, notincluding o nulo de terminação.
wchar_t * wcscpy (alvo, fonte)Cópias a ampla cadeia de origem para uma matriz de destino.
wchar_t * wcscat (alvo, fonte)Concatena a ampla cadeia de origem para o fim da cadeia targetwide.
wchar_t * wcsncpy (alvo, fonte, n)Cópias uma grande corda até ncaracteres da cadeia de origem para uma matriz de destino.
wchar_t * wcsncat (alvo, fonte, n)Concatena a string de origem para o final do targetString ou n caracteres, o que comesfirst.
wchar_t * wcsstr (string, padrão)Localiza o endereço da primeira ocorrência do padrão em string.Returns um nulo se o padrão não foi encontrado.
int wcscmp (source1, source2)Compara duas cadeias de largura. Retorna -1 se source1 ocorre antes source2 no dicionário e 1 se later.Returns 0 se as duas cordas corresponder exatamente.
int wcsncmp (source1, source2, n)Compara o primeiro n ampla charactersin duas cordas de largura.

Lembre-se que caracteres largos são usados ​​para aplicações que devem suportar línguas estrangeiras, onde míseros 255 caracteres diferentes podem não ser o suficiente.

A seguir mostra uma versão de caracteres largos da Concatenar programa:

// ConcatenateWide - concatenar duas cadeias de largura // com um "-" no meio usando rotinas de biblioteca # include #incluir #incluir usando namespace std-int main (int nNumberofArgs, char * pszArgs []) {// leia primeira corda ... wchar_t wszString1 [260] -cout lt; lt; "Enter string # 1:" - wcin.getline (wszString1, 128) - // ... agora a segunda cadeia ... wchar_t wszString2 [128] -cout lt; lt; "Enter string # 2:" - wcin.getline (wszString2, 128) - // agora alinhavar o segundo para o final do primeiro // com um traço em betweenwcsncat (wszString1, L "-", 260) -wcsncat (wszString1 , wszString2, 260) -wcout lt; lt; L " n" lt; lt; wszString1 lt; lt; endl - // espera até que o usuário está pronto antes de terminar o programa // para permitir que o usuário veja o resultscout programa lt; lt; "Pressione Enter para continuar ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - retornar 0-}

O amplo programa de cadeia de caracteres é semelhante ao seu de byte único primo cadeia de caracteres, exceto para as seguintes diferenças:

  • Variáveis ​​são declaradas wchar_t ao invés de Char.

  • caracteres constantes e strings constantes ser precedida de uma EU, como em L # 147 Esta é uma grande string # 148-.

  • os objectos wcin e wcout são utilizados no lugar de cin e cout para entrada e saída.

  • o wcs # 133- funções aparecer no lugar da estreita str # 133- funções.

A saída a partir de ConcatenateWide parece ser idêntica à do char-Sediada Concatenar programa para aqueles que fazem a maior parte de sua entrada / saída em línguas europeias. O tema de escrever programas capazes de lidar com vários idiomas com alfabetos diferentes e regras de gramática é conhecido como localização.

ANSI C ++ inclui um tipo corda concebido para torná-lo mais fácil de manipular cadeias de texto.

menu