Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Unicode é uma especificação para suportar todos os conjuntos de caracteres, incluindo aqueles que não podem ser representados em um único byte. Se você estiver programando para um mercado internacional, recomendamos que use Unicode ou um conjunto de caracteres multibyte (MBCS). Ou, codifique o seu programa para que possa criá-lo para qualquer um alterando um interruptor.
Um caractere largo é um código de caracteres multilíngue de 2 bytes. Dezenas de milhares de caracteres, compreendendo quase todos os caracteres usados na computação moderna em todo o mundo, incluindo símbolos técnicos e caracteres especiais de publicação, podem ser representados de acordo com a especificação Unicode como um único caractere largo codificado usando UTF-16. Os caracteres que não podem ser representados em apenas um caractere largo podem ser representados em um par Unicode usando o recurso de par substituto Unicode. Como quase todos os caracteres de uso comum são representados em UTF-16 em um único caractere largo de 16 bits, o uso de caracteres largos simplifica a programação com conjuntos de caracteres internacionais. Caracteres largos codificados usando UTF-16LE (para little-endian) são o formato de caractere nativo para Windows.
Uma cadeia de caracteres largos é representada como uma wchar_t[] matriz e é apontada por um wchar_t* ponteiro. Qualquer caractere ASCII pode ser representado como um caractere largo prefixando a letra L para o caractere. Por exemplo, L'\0' é o caractere NULL de terminação larga (16 bits). Da mesma forma, qualquer literal de cadeia de caracteres ASCII pode ser representado como um literal de cadeia de caracteres larga, prefixando a letra L ao literal ASCII (L"Hello").
Geralmente, caracteres largos ocupam mais espaço na memória do que caracteres multibyte, mas são mais rápidos de processar. Além disso, apenas uma localidade pode ser representada por vez em uma codificação multibyte, enquanto todos os conjuntos de caracteres no mundo são representados simultaneamente pela representação Unicode.
A estrutura MFC é habilitada para Unicode por toda parte, e MFC realiza a habilitação Unicode usando macros portáteis, conforme mostrado na tabela a seguir.
Tipos de dados portáteis no MFC
| Tipo de dados não portátil | Substituída por esta macro |
|---|---|
char, wchar_t |
_TCHAR |
char*, LPSTR (tipo de dados Win32), LPWSTR |
LPTSTR |
const char*, LPCSTR (tipo de dados Win32), LPCWSTR |
LPCTSTR |
A classe CString usa _TCHAR como base e fornece construtores e operadores para conversões fáceis. A maioria das operações de cadeia de caracteres para Unicode pode ser escrita usando a mesma lógica usada para manipular o conjunto de caracteres ANSI do Windows, exceto que a unidade básica de operação é um caractere de 16 bits em vez de um byte de 8 bits. Ao contrário de trabalhar com conjuntos de caracteres multibyte, você não precisa (e não deve) tratar um caractere Unicode como se fossem dois bytes distintos. No entanto, você tem que lidar com a possibilidade de um único personagem representado por um par substituto de caracteres largos. Em geral, não escreva código que assuma que o comprimento de uma cadeia de caracteres é o mesmo que o número de caracteres, estreitos ou largos, que ela contém.
O que pretende fazer?
Usar o suporte a MFC Unicode e MBCS (Multibyte Character set)
Use wmain para que eu possa passar argumentos em formato de caracteres largos para o meu programa
Saiba mais sobre mapeamentos de texto genérico para portabilidade de largura de bytes