std:: wcsxfrm
|
Definido en el encabezado
<cwchar>
|
||
|
std::
size_t
wcsxfrm
(
wchar_t
*
dest,
const
wchar_t
*
src,
std::
size_t
count
)
;
|
||
Transforma la cadena ancha terminada en nulo apuntada por src a la forma definida por la implementación de manera que comparar dos cadenas transformadas con std::wcscmp produce el mismo resultado que comparar las cadenas originales con std::wcscoll , en la configuración regional C actual.
Los primeros count caracteres de la cadena transformada se escriben en el destino, incluyendo el carácter nulo terminador, y se devuelve la longitud de la cadena transformada completa, excluyendo el carácter nulo terminador.
Si count es 0 , entonces dest puede ser un puntero nulo.
Contenidos |
Notas
La longitud correcta del búfer que puede recibir toda la cadena transformada es 1 + std :: wcsxfrm ( nullptr, src, 0 ) .
Esta función se utiliza cuando se realizan múltiples comparaciones dependientes de la configuración regional utilizando la misma cadena ancha o conjunto de cadenas anchas, porque es más eficiente usar
std::wcsxfrm
para transformar todas las cadenas una sola vez, y posteriormente comparar las cadenas anchas transformadas con
std::wcscmp
.
Parámetros
| dest | - | puntero al primer elemento de una cadena ancha terminada en nulo donde escribir la cadena transformada |
| src | - | puntero a la cadena de caracteres anchos terminada en nulo que se va a transformar |
| count | - | número máximo de caracteres a generar |
Valor de retorno
La longitud de la cadena ancha transformada, sin incluir el carácter nulo de terminación.
Ejemplo
#include <cwchar> #include <iostream> int main() { std::setlocale(LC_ALL, "sv_SE.utf8"); std::wstring in1 = L"\u00e5r"; std::wstring out1(1 + std::wcsxfrm(nullptr, in1.c_str(), 0), L' '); std::wstring in2 = L"\u00e4ngel"; std::wstring out2(1 + std::wcsxfrm(nullptr, in2.c_str(), 0), L' '); std::wcsxfrm(&out1[0], in1.c_str(), out1.size()); std::wcsxfrm(&out2[0], in2.c_str(), out2.size()); std::wcout << "In the Swedish locale: "; if (out1 < out2) std::wcout << in1 << " before " << in2 << '\n'; else std::wcout << in2 << " before " << in1 << '\n'; std::wcout << "In lexicographical comparison: "; if (in1 < in2) std::wcout << in1 << " before " << in2 << '\n'; else std::wcout << in2 << " before " << in1 << '\n'; }
Salida:
In the Swedish locale: år before ängel In lexicographical comparison: ängel before år
Véase también
transforma una cadena para que
strcmp
produzca el mismo resultado que
strcoll
(función) |
|
|
[virtual]
|
transforma una cadena para que la comparación pueda reemplazar la intercalación
(función miembro protegida virtual de
std::collate<CharT>
)
|
|
compara dos cadenas anchas de acuerdo con la configuración regional actual
(función) |
|
|
Documentación C
para
wcsxfrm
|
|