Compartilhar via


mbsrtowcs

Converte uma cadeia de caracteres multibyte na localidade atual para uma cadeia de caracteres largos correspondente, com a capacidade de reinicialização no meio de um caractere multibyte. Uma versão mais segura dessa função está disponível. consulte mbsrtowcs_s.

size_t mbsrtowcs(    wchar_t *wcstr,    const char **mbstr,    sizeof count,    mbstate_t *mbstate ); template <size_t size> size_t mbsrtowcs(    wchar_t (&wcstr)[size],    const char **mbstr,    sizeof count,    mbstate_t *mbstate ); // C++ only

Parâmetros

  • [out] wcstr
    Endereço para armazenar a cadeia de caracteres largos convertido resultante.

  • [in, out] mbstr
    Ponteiro indireto para o local da cadeia de caracteres multibyte para converter.

  • [in] count
    O número máximo de caracteres (não em bytes) para converter e armazenar em wcstr.

  • [in, out] mbstate
    Um ponteiro para um mbstate_t objeto de estado de conversão. Se esse valor for um ponteiro nulo, um objeto de estado de conversão interna estático é usado. Porque o interno mbstate_t objeto não é thread-safe, recomendamos que você sempre passa seu próprio mbstate parâmetro.

Valor de retorno

Retorna o número de caracteres convertida com êxito, não incluindo o caractere de terminação nula, se houver. Retorna (size_t)(-1) se ocorreu um erro e define errno para EILSEQ.

Comentários

O mbsrtowcs função converte uma cadeia de caracteres multibyte indiretamente apontada por mbstr, em caracteres largos armazenados no buffer apontado por wcstr, usando o estado de conversão contido em mbstate. A conversão continua para cada caractere até encontrar qualquer uma terminação nula caracteres multibyte, uma seqüência multibyte não corresponde a um caractere válido na localidade atual for encontrada, ou até count caracteres tiverem sido convertidos. Se mbsrtowcs encontra o caractere nulo multibyte ('\0') antes ou quando count ocorre, ele converte em um caractere nulo de terminação 16 bits e pára.

Assim, a cadeia de caracteres largos em wcstr é terminada em nulo apenas se mbsrtowcs encontra um multibyte caractere nulo durante a conversão. Se as sequências apontada por mbstr e wcstr se sobrepõem, o comportamento de mbsrtowcs é indefinido. mbsrtowcsé afetado pela categoria LC_TYPE da localidade atual.

O mbsrtowcs função difere da mbstowcs, _mbstowcs_l por sua capacidade de reinicialização. O estado de conversão é armazenado em mbstate para chamadas subseqüentes para o mesmo ou outras funções reinicializáveis. Resultados são indefinidos ao combinar o uso de funções reiniciáveis e não reiniciável. Por exemplo, um aplicativo deve usar mbsrlen em vez de mbslen, se uma chamada subsequente mbsrtowcs é usado em vez dembstowcs.

Se wcstr não é um ponteiro nulo, o objeto de ponteiro apontado por mbstr é atribuído um ponteiro nulo se a conversão foi interrompida porque foi atingido um caractere nulo de terminação. Caso contrário, ela é atribuída passado simplesmente endereço do último caractere multibyte convertido, se houver. Isso permite que uma chamada de função subsequentes reiniciar a conversão em que essa chamada é interrompido.

Se o wcstr argumento é um ponteiro nulo, o count argumento é ignorado e mbsrtowcs retorna o tamanho necessário em caracteres largos para a cadeia de caracteres de destino. Se mbstate é um ponteiro nulo, a função usa um estático thread safe interno mbstate_t objeto de estado de conversão. Se a seqüência de caracteres mbstr não tem um multibyte correspondente a representação de caracteres, -1 será retornado e o errno está definida como EILSEQ.

Se mbstr isa ponteiro nulo, o manipulador de parâmetro inválido é invocado, como descrito em Validação do parâmetro. Se a execução tiver permissão para continuar, essa função define errno como EINVAL e retorna -1.

Em C++, essa função tem uma sobrecarga de modelo que invoca a contrapartida mais recente e segura dessa função. Para obter mais informações, consulte Sobrecargas de modelo seguras.

Exceções

O mbsrtowcs função é safe multithread desde que nenhuma função no thread atual chama setlocale desde que essa função está em execução e o mbstate argumento não é um ponteiro nulo.

Equivalência do .NET Framework

Não aplicável. Para chamar a função C padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Requisitos

Rotina

Cabeçalho necessário

mbsrtowcs

< WCHAR. h >

Consulte também

Referência

Conversão de dados

Localidade

Interpretação de sequências de caracteres multibyte

mbrtowc

mbtowc, _mbtowc_l

mbstowcs, _mbstowcs_l

mbsinit