home | help
std::regex_...orm_primary(3)   C++ Standard Libary  std::regex_...orm_primary(3)

NAME
     std::regex_traits::transform_primary - std::regex_traits::transform_primary

Synopsis
	template< class ForwardIt >
	string_type transform_primary( ForwardIt first, ForwardIt last ) const;

	For  the  character sequence [first, last), obtains the primary sort key
     in the imbued
	locale's collating order, that is, the sort key that is based on the po-
     sitions of
	the letters and collation units in the national alphabet, ignoring case,
     diacritics,
	variants, etc. If a primary sort key compares less than another  primary
     sort key
	with operator<, then the character sequence that produced the first sort
     key comes
	before	the character sequence that produced the second sort key, in the
     currently
	imbued locale's primary collation order.

	The regex library uses this trait to match  characters	against  equiva-
     lence classes.
	For example, the regex [[=a=]] is equivalent to the character c1 if
	traits.transform_primary(c1)   is  equivalent  to  traits.transform_pri-
     mary("a") (which
	is true for any c1 from "AAAAAAAaA A!AcALAxAY" in the U.S.  English  lo-
     cale). Note that
	transform_primary()  takes a character sequence argument because equiva-
     lence classes
	may be multicharacter, such as [[=ch=]] in Czech or [[=dzs=]] in Hungar-
     ian.

	There is no portable way to define primary sort key in terms of std::lo-
     cale since
	the conversion from the collation key returned	by  std::collate::trans-
     form() to the
	primary equivalence key is locale-specific, and if the user replaces the
	std::collate  facet,  that conversion is no longer known to the standard
     library's
	std::regex_traits. Standard library specializations of std::regex_traits
     return an
	empty string unless the std::collate facet of the  currently-imbued  lo-
     cale was not
	replaced by the user, and still matches the system-supplied std::collate
     facet), in
	which  case  std::collate_byname<CharT>::transform(first,  last) is exe-
     cuted and the
	sort key it produces is converted to the expected primary sort key using
     a
	locale-specific conversion.

Parameters
	first, last - a pair of iterators which determines the sequence of char-
     acters to
		      compare

Type requirements
	-
	ForwardIt must meet the requirements of LegacyForwardIterator.

Return value
	The primary sort key for the character sequence  [first,  last)  in  the
     currently
	imbued locale, ignoring case, variant, diacritics, etc.

Example
	Demonstrates the regex feature that works through transform_primary().

     // Run this code

      #include <iostream>
      #include <regex>

      int main()
      {
	  std::locale::global(std::locale("en_US.UTF-8"));
	  std::wstring str = L"AAAAAAAaA A!AcALAxAY";
	  std::wregex re(L"[[=a=]]*", std::regex::basic);
	  std::cout << std::boolalpha << std::regex_match(str, re) << '\n';
      }

Possible output:
      true

	 This section is incomplete
	 Reason:  could  use an example with user-defined regex_traits supplying
     user-defined
	 transform_primary

Category:
	  * Todo with reason

http://cppreference.com 	   2024.06.10	    std::regex_...orm_primary(3)

home | help