std::collate::transform, std::collate::do_transform
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
<metanoindex/>
<tbody> </tbody>| Определено в заголовочном файле <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.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
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.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Параметры
| low | — | указатель на первый символ в последовательности преобразования
Оригинал: pointer to the first character in the sequence to transform Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
| high | — | за последним указатель на последовательность преобразования
Оригинал: one past the end pointer for the sequence to transform Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
Возвращаемое значение
Строка преобразуется так, что лексикографическое сравнение строк преобразуются может быть использован вместо сопоставления оригиналов. В "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.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Заметки
В дополнение к использованию в сортировки, реализации конкретного формата преобразованной строки, как известно, 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.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Пример
Запустить этот код
#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 (функция) | |
| преобразует широкую строку так, чтобы wcscmp давала тот же результат, что и wcscoll (функция) |