std::collate<CharT>:: transform, do_transform
|
Definido en el encabezado
<locale>
|
||
|
public
:
string_type transform ( const CharT * low, const CharT * high ) const ; |
(1) | |
|
protected
:
virtual string_type do_transform ( const CharT * low, const CharT * high ) const ; |
(2) | |
do_transform
de la clase más derivada.
[
low
,
high
)
a una cadena que, comparada lexicográficamente (por ejemplo, con
operator<
para cadenas) con el resultado de llamar
transform()
en otra cadena, produce el mismo resultado que llamar
do_compare()
en las mismas dos cadenas.
Contenidos |
Parámetros
| low | - | puntero al primer carácter en la secuencia a transformar |
| high | - | puntero una posición después del final para la secuencia a transformar |
Valor de retorno
La cadena transformada de modo que la comparación lexicográfica de las cadenas transformadas pueda usarse en lugar de la comparación con intercalación de las originales. En la configuración regional "C", la cadena devuelta es una copia exacta de
[
low
,
high
)
. En otras configuraciones regionales, el contenido de la cadena devuelta está definido por la implementación, y el tamaño puede ser considerablemente mayor.
Notas
Además de su uso en la ordenación, el formato específico de la implementación de la cadena transformada es conocido por std::regex_traits<>::transform_primary , que es capaz de extraer la información de la clase de equivalencia.
Ejemplo
#include <iomanip> #include <iostream> #include <locale> int main() { std::locale::global(std::locale("sv_SE.utf8")); auto& f = std::use_facet<std::collate<wchar_t>>(std::locale()); std::wstring in1 = L"\u00e4ngel"; std::wstring in2 = L"\u00e5r"; std::wstring out1 = f.transform(&in1[0], &in1[0] + in1.size()); std::wstring out2 = f.transform(&in2[0], &in2[0] + in2.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 lexicographic 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 lexicographic comparison: ängel before år
Véase también
transforma una cadena de modo que
strcmp
produzca el mismo resultado que
strcoll
(función) |
|
transforma una cadena ancha de modo que
wcscmp
produzca el mismo resultado que
wcscoll
(función) |