std::regex_traits::transform_primary
Материал из cppreference.com
< cpp | regex | regex traits
![]() | Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
template<class ForwardIt > string_type transform_primary( ForwardIt first, ForwardIt last)const | ||
Получает первичный (без учета регистра, диакритических знаков, вариант, и т.д.) ключ сортировки для последовательности символов
[first, last)
, такие, что если первичный ключ сортировки сравнивает меньше, чем другой первичный ключ сортировки с operator<, то последовательность символов, которая выпустила первый ключ сортировки доходит до последовательность символов, который произвел второй ключ сортировки, в первичных порядка сортировки в настоящее время проникнуться локали.Оригинал:
Obtains the primary (ignoring case, diacritics, variant, etc) sort key for the character sequence
[first, last)
, such that 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.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Библиотека регулярных выражений использует эту черту в соответствии с символами на классы эквивалентности. Например, [[=a=]] регулярное выражение эквивалентно характер
c1
если traits.transform_primary(c1) эквивалентно traits.transform_primary("a") (что справедливо для любой c1
от "AÀÁÂÃÄÅaàáâãäå"). Обратите внимание, что transform_primary()
принимает аргумент последовательность символов, потому что классы эквивалентности может быть multicharacter, таких как [[=ll=]].Оригинал:
The regex library uses this trait to match characters against equivalence classes. For example, the regex [[=a=]] is equivalent to the character
c1
if traits.transform_primary(c1) is equivalent to traits.transform_primary("a") (which is true for any c1
from "AÀÁÂÃÄÅaàáâãäå"). Note that transform_primary()
takes a character sequence argument because equivalence classes may be multicharacter, such as [[=ll=]].Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Существует нет портативный способ определить первичный ключ сортировки в терминах std::locale, так как переход от сортировки ключевых возвращается std::collate::transform() к первичному эквивалентности ключ локали, и если пользователь заменяет std::collate грань, что преобразование не известно стандартной библиотеки std::regex_traits. Стандартный специализации библиотеки std::regex_traits возвращать пустую строку, если std::collate аспект в данный момент проникнуться язык не был заменен самим пользователем, и до сих пор совпадает с системой поставляемых std::collate грань), в этом случае std::collate_byname<charT>::transform(first, last) выполняется и ключ сортировки он производит превращается в ожидаемый первичный ключ сортировки, используя местные условия преобразования.
Оригинал:
There is no portable way to define primary sort key in terms of std::locale since the conversion from the collation key returned by std::collate::transform() 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 locale 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 executed and the sort key it produces is converted to the expected primary sort key using a locale-specific conversion.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править]Параметры
first, last | — | пару итераторов который определяет последовательность символов для сравнения Оригинал: a pair of iterators which determines the sequence of characters to compare Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
Требования к типам | ||
-ForwardIt должен соответствовать требованиям ForwardIterator . |
[править]Возвращаемое значение
Первичный ключ сортировки для
[first, last)
последовательность символов в настоящее время проникнуться языка, игнорируя случае, вариант, диакритические знаки, и т.д. Оригинал:
The primary sort key for the character sequence
[first, last)
in the currently imbued locale, ignoring case, variant, diacritics, etc. Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править]Пример
Демонстрирует регулярных выражений особенность, которая работает через transform_primary ()
Оригинал:
Demonstrates the regex feature that works through transform_primary()
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Запустить этот код
#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';}
Вывод:
true
Этот раздел не завершён Причина: could use an example with user-defined regex_traits supplying user-defined transform_primary |