Informações sobre cadeias de caracteres

As funções de cadeia de caracteres fornecem aos aplicativos os meios para copiar, comparar, classificar, formatar e converter cadeias de caracteres, bem como os meios para determinar o tipo de caractere de cada caractere em uma cadeia de caracteres. Todas as funções de cadeia de caracteres dão suporte aos conjuntos de caracteres Unicode, byte duplo e byte único se esses conjuntos de caracteres forem compatíveis com o sistema operacional no qual o aplicativo é executado.

Aviso de segurança: O uso incorreto de funções de cadeia de caracteres pode causar problemas de segurança para seu aplicativo. Normalmente, isso envolve um estouro de buffer que pode permitir um ataque de negação de serviço contra seu aplicativo ou a injeção de código executável de um invasor. As funções Strsafe permitem o tratamento mais seguro de cadeias de caracteres e são recomendadas para uma melhor segurança para seu aplicativo. Para obter mais informações sobre essas funções, consulte Usando as funções Strsafe.h.

Esta seção discute os tópicos a seguir.

Comparação com funções de cadeia de caracteres de Run-Time C

Muitas funções de cadeia de caracteres duplicam ou aprimoram funções de cadeia de caracteres familiares da biblioteca CRT (tempo de execução C) padrão. Muitos dos aprimoramentos permitem que as funções de cadeia de caracteres funcionem com Unicode ou conjuntos de caracteres estendidos. A tabela a seguir mostra as funções CRT, as funções do Windows (que dão suporte a Unicode, ao contrário das funções CRT) e as funções StrSafe.

Função cadeia de caracteres CRT Função Cadeia de Caracteres do Windows Função StrSafe
strcat lstrcat
StringCchCat
StringCchCatEx
StringCbCat
StringCbCatEx
Strcmp lstrcmp (sem função equivalente)
strcpy lstrcpy
StringCchCopy
StringCchCopyEx
StringCbCopy
StringCbCopyEx
strlen lstrlen
StringCchLength
StringCbLength

 

A função strlen , por exemplo, sempre retorna o número de bytes em uma cadeia de caracteres, mas a função lstrlen retorna o número de valores TCHAR , que se refere a bytes para versões ANSI da função ou valores WCHAR para versões Unicode.

As funções de cadeia de caracteres a seguir diferem das funções C padrão, como tolower e toupper , pois operam em qualquer caractere em um conjunto de caracteres. Usando a função CharLower , por exemplo, um aplicativo pode converter um U maiúsculo com um umlaut (Ü) em minúsculas (ü). Para obter mais informações sobre conjuntos de caracteres, consulte Conjuntos de caracteres de byte único.

Função Descrição
CharLower Converte um caractere ou uma cadeia de caracteres em minúsculas.
CharLowerBuff Converte uma cadeia de caracteres em minúsculas.
CharNext Move para o próximo caractere em uma cadeia de caracteres.
CharPrev Move para o caractere anterior em uma cadeia de caracteres.
CharUpper Converte um caractere ou uma cadeia de caracteres em maiúsculas.
CharUpperBuff Converte uma cadeia de caracteres em letras maiúsculas.

 

As funções de cadeia de caracteres a seguir fazem determinações sobre um caractere com base na semântica do idioma selecionado pelo usuário. Essas funções são habilitadas para Unicode.

Função Descrição
IsCharAlpha Determina se um caractere é alfabético.
IsCharAlphaNumeric Determina se um caractere é alfanumérico.
IsCharLower Determina se um caractere está em minúsculas.
IsCharUpper Determina se um caractere é maiúsculo.

 

A tabela a seguir mostra as extensões Unicode para as funções crt (tempo de execução C) padrão. Conforme mencionado anteriormente, as funções StrSafe permitem o tratamento mais seguro de cadeias de caracteres e são recomendadas para uma melhor segurança para seu aplicativo.

Função CRT Padrão Função String Função StrSafe
sprintf wsprintf
StringCchPrintf
StringCchPrintfEx
StringCbPrintf
StringCbPrintfEx
vsprintf wvsprintf
StringCchVPrintf
StringCchVPrintfEx
StringCbVPrintf
StringCbVPrintfEx

 

Recursos de cadeia de caracteres

Um aplicativo que mantém cadeias de caracteres em recursos pode ser convertido em novos idiomas com o mínimo de esforço. Em vez de pesquisar cadeias de caracteres nos módulos de origem, você pode simplesmente traduzir as cadeias de caracteres no arquivo de recurso e vincular novamente o aplicativo. Além disso, o uso de recursos de cadeia de caracteres simplifica a criação de versões Unicode e não Unicode do aplicativo dos mesmos arquivos de origem.

A função LoadString carrega um recurso de cadeia de caracteres do arquivo executável de um aplicativo. A função FormatMessage carrega um recurso de cadeia de caracteres e interpreta as opções de formatação que podem ser inseridas na cadeia de caracteres.

Os recursos no formato binário são armazenados no formato Unicode. Ao carregar recursos, os aplicativos podem usar a versão Unicode das funções de recurso (LoadStringW, por exemplo) para obter recursos como dados Unicode.

Para recursos de cadeia de caracteres de 16 bits, 255 caracteres é o comprimento máximo. Para recursos de cadeia de caracteres de 32 bits, 65535 caracteres é o comprimento máximo.