Compartilhar via


strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l

Transforme uma seqüência de caracteres com base nas informações específicas de localidade.

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
    Seqüência de caracteres de destino.

  • strSource
    Seqüência de caracteres de origem.

  • count
    Número máximo de caracteres para colocar em strDest*.*

  • locale
    A localidade para usar.

Valor de retorno

Retorna o comprimento da cadeia transformado, sem contar o caractere nulo de terminação.Se o valor de retorno é 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 for definido como EILSEQ.

Comentários

O strxfrm função transforma a seqüência de caracteres apontada por strSource em um novo agrupadas no formulário que é armazenado em strDest.Não mais do que count caracteres, incluindo o caractere nulo, são transformados e colocadas na seqüência de caracteres resultante.A transformação é feita usando a localidade LC_COLLATE definição de categoria.Para obter mais informações sobre LC_COLLATE, consulte setlocale.strxfrmusa a localidade atual para o seu comportamento depende da localidade; _strxfrm_lé idêntica, exceto que ele usa a localidade passada em vez da localidade atual.Para obter mais informações, consulte Localidade.

Após a transformação, uma chamada para strcmp com as duas seqüências de caracteres transformadas produz resultados idênticos aos de uma chamada para strcoll aplicados para as duas seqüências de caracteres originais.Como ocorre com strcoll e stricoll, strxfrm trata automaticamente de seqüências de caracteres multibyte conforme apropriado.

wcsxfrmé uma versão de caractere largo de strxfrm; os argumentos de seqüência de caracteres do wcsxfrm são ponteiros de caractere largo.Para wcsxfrm, após a transformação de cadeia de caracteres, uma chamada para wcscmp com as duas seqüências de caracteres transformadas produz resultados idênticos aos de uma chamada para wcscoll aplicados para as duas seqüências de caracteres originais.wcsxfrme strxfrm tenham comportamento idêntico caso contrário.wcsxfrmusa a localidade atual para o seu comportamento depende da localidade; _wcsxfrm_lusa a localidade passada em vez da localidade atual.

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

Mapeamentos de rotina de texto genérico

TCHAR.Rotina H

_ Unicode & _ MBCS do arquivo não definido

_ MBCS do arquivo definido

_ Unicode definido

_tcsxfrm

strxfrm

strxfrm

wcsxfrm

_tcsxfrm_l

_strxfrm_l

_strxfrm_l

_wcsxfrm_l

Na localidade "C", a ordem dos caracteres no conjunto de caracteres (conjunto de caracteres ASCII) é igual a lexicographic ordem dos caracteres.No entanto, em outras localidades, a ordem dos caracteres no conjunto de caracteres pode ser diferente da ordem de caracteres lexicographic.Por exemplo, em determinadas localidades européias, o caractere 'a' (valor 0x61) precede o caractere ' & # x00E4;' (valor de 0xE4) no conjunto de caracteres, mas o caractere 'ä' precede a caractere 'a' lexicograficamente.

Em localidades para o qual o conjunto de caracteres e a ordem de lexicographic de caractere são diferentes, use strxfrm sobre as seqüências de caracteres originais e, em seguida strcmp sobre as seqüências resultantes para produzir uma comparação de seqüência de caracteres lexicographic de acordo com para a localidade atual LC_COLLATE definição de categoria.Assim, para comparar duas seqüências de caracteres lexicograficamente na localidade acima, use strxfrm sobre as seqüências originais, em seguida, strcmp sobre as seqüências resultantes.Como alternativa, você pode usar strcoll em vez de strcmp sobre as seqüências de caracteres originais.

strxfrmé basicamente um wrapper em torno LCMapString com LCMAP_SORTKEY.

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

1 + strxfrm( NULL, string, 0 )

Na localidade "C" somente, 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 obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.

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.

Consulte também

Referência

Conversão de Dados

localeconv

setlocale, wsetlocale

Localidade

Manipulação de cadeia de caracteres (CRT)

Funções de strcoll

strcmp, wcscmp, _mbscmp

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l