Compartilhar via


strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l

Transformar uma cadeia de caracteres com base nas informações de localidade específica.

size_t strxfrm(
   char *strDest,
   const char *strSource,
   size_t count 
);
size_t wcsxfrm(
   wchar_t *strDest,
   const wchar_t *strSource,
   size_t count 
);
size_t _strxfrm_l(
   char *strDest,
   const char *strSource,
   size_t count,
   _locale_t locale
);
size_t wcsxfrm_l(
   wchar_t *strDest,
   const wchar_t *strSource,
   size_t count,
   _locale_t locale
);

Parâmetros

  • strDest
    Cadeia de caracteres de destino.

  • strSource
    Cadeia de caracteres de origem.

  • count
    Número máximo de caracteres a ser colocado em strDest*.*

  • locale
    A localidade a ser usada.

Valor de retorno

Retorna o comprimento da cadeia de caracteres se não, contando o caractere nulo sendo encerrado. Se o valor de retorno for maior ou igual a count, o conteúdo de strDest é imprevisível. Em um erro, cada função define errno e retorna INT_MAX. Para um caractere inválido, errno é definido como EILSEQ.

Comentários

A função de strxfrm torna a cadeia de caracteres apontada por strSource em um novo formato ordenado que é armazenado em strDest. Não mais do que os caracteres de count , incluindo o caractere nulo, são transformadas e colocadas na cadeia de caracteres resultante. A transformação é feita usando a configuração da categoria de LC_COLLATE de localidade. Para obter mais informações sobre LC_COLLATE, consulte setlocale. strxfrm usa a localidade atual para seu comportamento dependente de localidade; _strxfrm_l é idêntico exceto que usa a localidade transmitido em vez da localidade atual. Para obter mais informações, consulte Localidade.

Após a transformação, uma chamada a strcmp com as duas cadeias de caracteres que transformadas gera os resultados idêntico ao de uma chamada para strcoll aplicada às duas cadeias de caracteres originais. Como com strcoll e stricoll, strxfrm controla automaticamente cadeias de caracteres de multibyte- caracteres conforme apropriado.

wcsxfrm é uma versão de ampla caractere de strxfrm; os argumentos de cadeia de caracteres de wcsxfrm são ponteiros de ampla caractere. Para wcsxfrm, depois que a transformação de cadeia de caracteres, uma chamada a wcscmp com dois gera transformados de cadeias de caracteres resultante idêntico ao de uma chamada para wcscoll aplicada às duas cadeias de caracteres originais. Caso contrário, wcsxfrm e strxfrm, ao contrário, se comportam de forma idêntica. wcsxfrm usa a localidade atual para seu comportamento dependente de localidade; _wcsxfrm_l usa a localidade transmitido em vez da localidade atual.

Essas funções validam seus parâmetros. Se strSource for um ponteiro nulo, ou strDest é um ponteiro NULL (a menos que a pontuação é zero), ou se count é maior que INT_MAX, o manipulador inválido do parâmetro será chamado, conforme descrito em Validação do parâmetro . Se a execução puder continuar, essas funções definirão errno como EINVAL e retornarão INT_MAX.

Mapeamentos da rotina de texto genérico

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

_tcsxfrm

strxfrm

strxfrm

wcsxfrm

_tcsxfrm_l

_strxfrm_l

_strxfrm_l

_wcsxfrm_l

Na localidade de C “2.0”, a ordem dos caracteres no conjunto de caracteres (conjunto de caracteres ASCII) é igual à ordem lexicographic de caracteres. No entanto, em outras localidades, a ordem de caracteres no conjunto de caracteres pode diferir da ordem lexicographic de caractere. Por exemplo, em algumas localidades europeias, o caractere “a” (valor 0x61) precede o caractere 'ä '(valor) 0xE4 no conjunto de caracteres, mas o caractere “ä” precede o caractere “a” lexicographically.

Nas localidades para o conjunto de caracteres e ordem lexicographic de caracteres diferem, use strxfrm em cadeias de caracteres original e strcmp em cadeias de caracteres resultante gerar em uma comparação de cadeia de caracteres lexicographic de acordo com a configuração atual da categoria de LC_COLLATE de localidade. Assim, para comparar lexicographically duas cadeias de caracteres na localidade acima, use strxfrm em cadeias de caracteres original, em strcmp em cadeias de caracteres resultante. Como alternativa, você pode usar strcoll em vez de strcmp em cadeias de caracteres originais.

strxfrm é basicamente um wrapper em torno de LCMapString com LCMAP_SORTKEY.

O valor da expressão seguinte é o tamanho da matriz necessária para manter a transformação de strxfrm de cadeia de caracteres de origem:

1 + strxfrm( NULL, string, 0 )

Na localidade de “C” somente 2.0, strxfrm é equivalente à seguinte:

strncpy( _string1, _string2, _count );
return( strlen( _string1 ) );

Requisitos

Rotina

Cabeçalho necessário

strxfrm

<string.h>

wcsxfrm

<string.h> ou <wchar.h>

_strxfrm_l

<string.h>

_wcsxfrm_l

<string.h> ou <wchar.h>

Para informações adicionais de compatibilidade, consulte Compatibilidade na Introdução.

Equivalência do .NET Framework

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

Consulte também

Referência

Conversão de dados

localeconv

setlocale, _wsetlocale

Localidade

Manipulação da cadeia de caracteres (CRT)

Funções strcoll

strcmp, wcscmp, _mbscmp

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l