GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::collate::transform,do_transform(3) C++ Standard Libary std::collate::transform,do_transform(3)

std::collate::transform,do_transform - std::collate::transform,do_transform


Defined in header <locale>
public: (1)
string_type transform( const CharT* low, const CharT* high ) const;
protected: (2)
virtual string_type do_transform( const CharT* low, const CharT* high ) const;


1) Public member function, calls the protected virtual member function do_transform
of the most derived class.
2) Converts the character sequence [low, high) to a string that, compared
lexicographically (e.g. with operator< for strings) with the result of calling
transform() on another string, produces the same result as calling do_compare() on
the same two strings.


low - pointer to the first character in the sequence to transform
high - one past the end pointer for the sequence to transform


The string transformed so that lexicographic comparison of the transformed strings
may be used instead of collating of the originals. In the "C" locale, the returned
string is the exact copy of [low, high). In other locales, the contents of the
returned string are implementation-defined, and the size may be considerably longer.


In addition to the use in collation, the implementation-specific format of the
transformed string is known to std::regex_traits<>::transform_primary, which is able
to extract the equivalence class information.

// Run this code


#include <iostream>
#include <iomanip>
#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';


}


In the Swedish locale: år before ängel
In lexicographic comparison: ängel before år


strxfrm transform a string so that strcmp would produce the same result as strcoll
(function)
transform a wide string so that wcscmp would produce the same result as
wcsxfrm wcscoll
(function)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.