C ++ wcsrtombs () - Biblioteca C ++ Padrão

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

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

protótipo wcsrtombs ()

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

A função wcsrtombs () converte a cadeia de caracteres larga representada por * src na cadeia de caracteres multibyte correspondente e é armazenada na matriz de caracteres apontada por dest se dest não for nulo. Um máximo de len caracteres são gravados em dest.

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

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

Parâmetros wcsrtombs ()

  • > dest: Ponteiro para a matriz de caracteres onde o caractere multibyte convertido está armazenado.
  • src: Ponteiro para apontar para o primeiro caractere largo a ser convertido.
  • len: Número máximo de bytes disponíveis no array dest.
  • ps: Ponteiro para o objeto de estado de conversão.

wcsrtombs () Valor de retorno

  • Em caso de sucesso, a função wcsrtombs () retorna o número de caracteres multibyte gravados em dest, excluindo o caractere nulo largo de terminação, mas incluindo sequências de deslocamento.
    Se dest for um ponteiro nulo, ele retornará o número de caracteres largos que teriam sido escritos, excluindo o caractere nulo final.
  • Em caso de erro de conversão, -1 é retornado e errno é definido como EILSEQ .

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

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

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

 Número de caracteres multibyte escritos (excluindo " 0") = 8 caracteres multibyte = ݣݗݿݟ

Artigos interessantes...