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::regex_traits::lookup_classname(3) C++ Standard Libary std::regex_traits::lookup_classname(3)

std::regex_traits::lookup_classname - std::regex_traits::lookup_classname


template< class ForwardIt >


char_class_type lookup_classname( ForwardIt first,
ForwardIt last,


bool icase = false ) const;


If the character sequence [first, last) represents the name of a valid character
class in the currently imbued locale (that is, the string between [: and :] in
regular expressions), returns the implementation-defined value representing this
character class. Otherwise, returns zero.


If the parameter icase is true, the character class ignores character case, e.g. the
regex [:lower:] with std::regex_constants::icase generates a call to
regex_traits<>::lookup_classname() with [first, last) indicating the string "lower"
and icase == true. This call returns the same bitmask as the call generated by the
regex [:alpha:] with icase == false.


The following character classes are always recognized, in both narrow and wide
character forms, and the classifications returned (with icase == false) correspond
to the matching classifications obtained by the std::ctype facet of the imbued
locale, as follows:


character class std::ctype classification
"alnum" std::ctype_base::alnum
"alpha" std::ctype_base::alpha
"blank" std::ctype_base::blank
"cntrl" std::ctype_base::cntrl
"digit" std::ctype_base::digit
"graph" std::ctype_base::graph
"lower" std::ctype_base::lower
"print" std::ctype_base::print
"punct" std::ctype_base::punct
"space" std::ctype_base::space
"upper" std::ctype_base::upper
"xdigit" std::ctype_base::xdigit
"d" std::ctype_base::digit
"s" std::ctype_base::space
"w" std::ctype_base::alnum with '_' optionally added


The classification returned for the string "w" may be exactly the same as "alnum",
in which case isctype() adds '_' explicitly.


Additional classifications such as "jdigit" or "jkanji" may be provided by
system-supplied locales (in which case they are also accessible through std::wctype)


first, last - a pair of iterators which determines the sequence of characters that
represents a name of a character class
icase - if true, ignores the upper/lower case distinction in the character
classification


-
ForwardIt must meet the requirements of LegacyForwardIterator.


The bitmask representing the character classification determined by the given
character class, or char_class_type() if the class is unknown.


demonstraits a custom regex_traits implementation of lookup_classname/isctype

// Run this code


#include <iostream>
#include <locale>
#include <regex>
#include <cwctype>


// This custom regex traits uses wctype/iswctype to implement lookup_classname/isctype
struct wctype_traits : std::regex_traits<wchar_t>
{
using char_class_type = std::wctype_t;
template<class It>
char_class_type lookup_classname(It first, It last, bool=false) const {
return std::wctype(std::string(first, last).c_str());
}
bool isctype(wchar_t c, char_class_type f) const {
return std::iswctype(c, f);
}
};


int main()
{
std::locale::global(std::locale("ja_JP.utf8"));
std::wcout.sync_with_stdio(false);
std::wcout.imbue(std::locale());


std::wsmatch m;
std::wstring in = L"風の谷のナウシカ";
// matches all characters (they are classified as alnum)
std::regex_search(in, m, std::wregex(L"([[:alnum:]]+)"));
std::wcout << "alnums: " << m[1] << '\n'; // prints "風の谷のナウシカ"
// matches only the katakana
std::regex_search(in, m,
std::basic_regex<wchar_t, wctype_traits>(L"([[:jkata:]]+)"));
std::wcout << "katakana: " << m[1] << '\n'; // prints "ナウシカ"
}


alnums: 風の谷のナウシカ
katakana: ナウシカ


isctype indicates membership in a character class
(public member function)
wctype looks up a character classification category in the current C locale
(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.