首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::regex_traits::transform_primary

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

用于字符序列[first, last),获取注入的区域设置%27 s排序顺序中的主排序键,即基于字母和排序单位在国家字母中的位置的排序键,忽略大小写、对话词、变体。如果主排序键比另一个主排序键要小的话operator<,则生成第一个排序键的字符序列将在生成第二个排序键的字符序列之前,按当前注入的区域设置%27s主排序规则顺序排列。

regex库使用此特性将字符与等效类匹配。例如,regex[[=a=]]等于字符。c1如果traits.transform_primary(c1)等于traits.transform_primary("a")%28,对任何c1"AÀÁÂÃÄÅaàáâãäå"在美国英语地区%29。请注意transform_primary()接受字符序列参数,因为等效类可能是多字符,例如[[=ch=]]在捷克语或[[=dzs=]]匈牙利语。

没有可移植的方法来定义主排序键。std::locale返回的排序规则键的转换。std::collate::transform()对于主等效键是特定于区域设置的,如果用户替换std::collate方面,该转换不再为标准库%27s所知。std::regex_traits标准图书馆的专门化std::regex_traits返回空字符串,除非std::collate当前注入的区域设置的facet未被用户替换,并且仍然与系统提供的方面匹配。std::collate面%29,在这种情况下std::collate_byname<charT>::transform(first, last)执行,并使用特定于区域设置的转换将其生成的排序键转换为预期的主排序键。

参数

first, last

-

a pair of iterators which determines the sequence of characters to compare

类型要求

---。

返回值

字符序列的主排序键。[first, last)在当前注入的环境中,忽略案例、变体、解说词等。

演示通过转换工作的regex特性。[医]初级%28%29。

二次

代码语言:javascript
复制
#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';
}

二次

产出:

二次

代码语言:javascript
复制
true

二次

代码语言:txt
复制
 © cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券