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(
   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 fonte.

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

  • locale
    A localidade para usar.

Valor de retorno

Retorna o comprimento da seqüência de caracteres transformado, sem contar o caractere nulo de terminação.Se o valor retornado for maior que ou igual a count, o conteúdo de strDest é imprevisível. Em um erro, cada função define errno e retornos INT_MAX. Para um caractere inválido, errno é definido como EILSEQ.

Comentários

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

Após a transformação, uma telefonar para strcmp com duas cadeias de caracteres transformadas produz resultados idênticos aos de uma telefonar para strcoll aplicada às duas seqüências de caracteres originais. sistema autônomo ocorre com strcoll e stricoll, strxfrm manipula automaticamente sistema autônomo seqüências de caractere de multibyte conforme apropriado.

wcsxfrm é uma versão de caractere largo da strxfrm; os argumentos de seqüência de caracteres do wcsxfrm são ponteiros de caractere largo. For wcsxfrm, após a transformação de cadeia de caracteres, uma telefonar para wcscmp com duas cadeias de caracteres transformadas produz resultados idênticos aos de uma telefonar para wcscoll aplicada às duas seqüências de caracteres originais. wcsxfrm e strxfrm tenham comportamento idêntico caso contrário. wcsxfrm usa a localidade corrente para seu comportamento dependente de localidade; _wcsxfrm_l usa a localidade passada em vez da localidade corrente.

Essas funções validar seus parâmetros.If strSource é um ponteiro nulo, ou strDest é um ponteiro NULL (a menos que contagem zero), ou se count é maior que INT_MAX, o manipulador de parâmetro inválido é invocado, sistema autônomo descrito em Validação de parâmetro . Se a execução for permitida para continuar, essas funções conjunto errno para EINVAL e retornar INT_MAX.

Mapeamentos de rotina de texto genérica

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 "C", a ordem dos caractere no conjunto de caractere (ASCII conjunto de caractere) é igual a lexicographic ordem dos caractere.No entanto, em outros locais, a ordem de caracteres no conjunto de caracteres pode ser diferentes da ordem de caractere lexicographic.Por exemplo, em determinados locais europeus, o caractere 'a' (valor 0x61) precede o caractere 'ç' (valor 0xE4) no caractere definido, mas o caractere 'ç' precede o caractere 'a' lexicograficamente.

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

O valor da expressão a seguir é o dimensionar da matriz necessário para manter o strxfrm transformação de seqüência de fonte:

1 + strxfrm( NULL, string, 0 )

Na localidade "C"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 compatibilidade, consulte Compatibilidade na introdução.

Equivalente do NET Framework

Não aplicável. Para telefonar 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 seqüência de caracteres (CRT)

Funções strcoll

strcmp wcscmp, _mbscmp

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l