C ++ mbsrtowcs () - Biblioteca C ++ padrão

A função mbsrtowcs () em C ++ converte uma seqüência de caracteres multibyte estreita em uma seqüência de caracteres ampla (do tipo wchar_t).

A função mbsrtowcs () é definida no arquivo de cabeçalho.

protótipo mbsrtowcs ()

 size_t mbsrtowcs (wchar_t * dest, const char ** src, size_t len, mbstate_t * ps);

A função mbsrtowcs () converte a string de caracteres multibyte cujo primeiro byte é representado por * src na representação ampla de caracteres correspondente e é armazenada na ampla matriz de caracteres apontada por dest. Um máximo de caracteres de largura inteira são gravados em dest.

O processo de conversão é semelhante a chamar mbrtowc () repetidamente. A conversão para se:

  • Um caractere nulo multibyte foi convertido e armazenado. Nesse caso, src é definido como nulo e ps representa o estado de deslocamento inicial.
  • Um caractere multibyte inválido foi encontrado. Nesse caso, src é definido para apontar o início do primeiro caractere multibyte não convertido.
  • o caractere largo foi armazenado em dest. Nesse caso, src é definido para apontar o início do primeiro caractere multibyte não convertido.

Parâmetros mbsrtowcs ()

  • dest: Ponteiro para a matriz onde o caractere largo convertido está armazenado.
  • src: Ponteiro para apontar para o primeiro caractere multibyte a ser convertido.
  • len: Número máximo de caracteres largos para armazenar.
  • ps: Ponteiro para o estado de conversão usado ao interpretar a string multibyte

mbsrtowcs () Valor de retorno

  • Em caso de sucesso, a função mbsrtowcs () retorna o número de caracteres largos gravados em dest, excluindo o caractere nulo largo de terminação. Se dest for um ponteiro nulo, ele retorna o número de caracteres largos que teriam sido escritos considerando o comprimento ilimitado.
  • Em caso de erro de conversão, -1 é retornado e errno é definido como EILSEQ .

Exemplo: Como funciona a função mbsrtowcs ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const char* str = "u0763u0757u077fu075f"; wchar_t wstr(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = mbsrtowcs(wstr, &str, len, &ps); wcout << L"Number of wide characters written (excluding L "\0 ") = " << retVal << endl; wcout << L"Wide character = " << wstr << endl; return 0; )

Quando você executa o programa, a saída será:

 Número de caracteres largos escritos (excluindo L " 0") = 4 caracteres largos = ݣݗݿݟ

Artigos interessantes...