std::regex_traits<CharT>:: transform_primary
|
template
<
class
ForwardIt
>
string_type transform_primary ( ForwardIt first, ForwardIt last ) const ; |
||
Para la secuencia de caracteres
[
first
,
last
)
, obtiene la clave de ordenación primaria en el orden de intercalación de la configuración regional actual, es decir, la clave de ordenación que se basa en las posiciones de las letras y unidades de intercalación en el alfabeto nacional, ignorando mayúsculas/minúsculas, diacríticos, variantes, etc. Si una clave de ordenación primaria se compara como menor que otra clave de ordenación primaria con
operator
<
, entonces la secuencia de caracteres que produjo la primera clave de ordenación viene antes que la secuencia de caracteres que produjo la segunda clave de ordenación, en el orden de intercalación primario de la configuración regional actual.
La biblioteca de expresiones regulares utiliza este rasgo para comparar caracteres con clases de equivalencia. Por ejemplo, la expresión regular
[
[
=
a
=
]
]
es equivalente al carácter
c1
si
traits.
transform_primary
(
c1
)
es equivalente a
traits.
transform_primary
(
"a"
)
(lo cual es verdadero para cualquier
c1
de
"AÀÁÂÃÄÅaàáâãäå"
en la configuración regional de inglés estadounidense). Nótese que
transform_primary()
toma un argumento de secuencia de caracteres porque las clases de equivalencia pueden ser multicarácter, como
[
[
=
ch
=
]
]
en checo o
[
[
=
dzs
=
]
]
en húngaro.
No existe una forma portátil de definir la clave de ordenación primaria en términos de std::locale ya que la conversión desde la clave de intercalación devuelta por std :: collate :: transform ( ) hacia la clave de equivalencia primaria es específica de la configuración regional, y si el usuario reemplaza la faceta std::collate , dicha conversión ya no es conocida por std::regex_traits de la biblioteca estándar. Las especializaciones de biblioteca estándar de std::regex_traits devuelven una cadena vacía a menos que la faceta std::collate de la configuración regional actualmente imbucida no haya sido reemplazada por el usuario, y aún coincida con la faceta std::collate proporcionada por el sistema), en cuyo caso se ejecuta std:: collate_byname < CharT > :: transform ( first, last ) y la clave de ordenación que produce se convierte a la clave de ordenación primaria esperada usando una conversión específica de la configuración regional.
Parámetros
| first, last | - | un par de iteradores que determina la secuencia de caracteres a comparar |
| Requisitos de tipo | ||
-
ForwardIt
debe cumplir con los requisitos de
LegacyForwardIterator
.
|
||
Valor de retorno
La clave de ordenación principal para la secuencia de caracteres
[
first
,
last
)
en la configuración regional actualmente imbucida, ignorando mayúsculas/minúsculas, variantes, diacríticos, etc.
Ejemplo
Demuestra la característica de expresiones regulares que funciona a través de
transform_primary()
.
#include <iostream> #include <regex> int main() { std::locale::global(std::locale("en_US.UTF-8")); std::wstring str = L"AÀÁÂÃÄÅaàáâãäå"; std::wregex re(L"[[=a=]]*", std::regex::basic); std::cout << std::boolalpha << std::regex_match(str, re) << '\n'; }
Salida posible:
true
|
Esta sección está incompleta
Razón: podría usar un ejemplo con regex_traits definido por el usuario que suministre transform_primary definido por el usuario |