Пространства имён
Варианты
Действия

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

Материал из cppreference.com
< cpp‎ | locale‎ | collate

 
 
Локализация
Локализации и фасеты
locale
Классификация символов
Преобразования
Базовые классы фасетов
Категории фасетов
Зависящие от локализации категории фасетов
Не зависящие от локализации фасеты преобразования unicode
codecvt_utf8(C++11)
codecvt_utf16(C++11)
Локализации С
 
std::collate
Член функций
Оригинал:
Member functions
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
collate::collate
collate::~collate
collate::compare
collate::do_compare
collate::transform
collate::do_transform
collate::hash
collate::do_hash
 
Определено в заголовочном файле <locale>
public:
string_type transform( const CharT* low, const CharT* high ) const;
(1)
protected:
string_type do_transform( const CharT* low, const CharT* high ) const;
(2)
1)
общественные функции-члена, вызывает защищенных виртуальных do_transform функции-члена из самых производного класса.
Оригинал:
public member function, calls the protected virtual member function do_transform of the most derived class.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
2)
Преобразует [low, high) последовательность символов в строку, что по сравнению лексикографически (например, с operator< для строк) с результатом вызова transform() на другую строку, дает тот же результат, что и вызов do_compare() на тех же двух строк.
Оригинал:
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.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

Содержание

[править] Параметры

low -
указатель на первый символ в последовательности преобразования
Оригинал:
pointer to the first character in the sequence to transform
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
high -
за последним указатель на последовательность преобразования
Оригинал:
one past the end pointer for the sequence to transform
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Возвращаемое значение

Строка преобразуется так, что лексикографическое сравнение строк преобразуются может быть использован вместо сопоставления оригиналов. В "C" локали, возвращаемая строка является точной копией [low, high). В других местах, содержание возвращаемой строки являются осуществление определенных, а размер может быть значительно больше.
Оригинал:
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.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Заметки

В дополнение к использованию в сортировки, реализации конкретного формата преобразованной строки, как известно, std::regex_traits <> :: transform_primary, который в состоянии извлечь информацию класса эквивалентности.
Оригинал:
In addition to the 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.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Пример

#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

[править] См. также

преобразование строки, так что STRCMP бы тот же результат, как strcoll
Оригинал:
transform a string so that strcmp would produce the same result as strcoll
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция) [edit]
преобразования строки широких, так что wcscmp бы тот же результат, как wcscoll
Оригинал:
transform a wide string so that wcscmp would produce the same result as wcscoll
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция) [edit]