regex_traits Class
Describes characteristics of elements for matching.
Syntax
template<class Elem>
class regex_traits
Parameters
Elem
The character element type to describe.
Remarks
The class template describes various regular expression traits for type Elem. The class template basic_regex Class uses this information to manipulate elements of type Elem.
Each regex_traits
object holds an object of type regex_traits::locale
which is used by some of its member functions. The default locale is a copy of regex_traits::locale()
. The member function imbue
replaces the locale object, and the member function getloc
returns a copy of the locale object.
Constructors
Constructor | Description |
---|---|
regex_traits | Constructs the object. |
Typedefs
Type name | Description |
---|---|
char_class_type | The type of character class designators. |
char_type | The type of an element. |
locale_type | The type of the stored locale object. |
size_type | The type of a sequence length. |
string_type | The type of a string of elements. |
Member functions
Member function | Description |
---|---|
getloc | Returns the stored locale object. |
imbue | Alters the stored locale object. |
isctype | Tests for class membership. |
length | Returns the length of a null-terminated sequence. |
lookup_classname | Maps a sequence to a character class. |
lookup_collatename | Maps a sequence to a collating element. |
transform | Converts to equivalent ordered sequence. |
transform_primary | Converts to equivalent caseless ordered sequence. |
translate | Converts to equivalent matching element. |
translate_nocase | Converts to equivalent caseless matching element. |
value | Converts an element to a digit value. |
Requirements
Header: <regex>
Namespace: std
Example
// std__regex__regex_traits.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>
typedef std::regex_traits<char> Mytr;
int main()
{
Mytr tr;
Mytr::char_type ch = tr.translate('a');
std::cout << "translate('a') == 'a' == " << std::boolalpha
<< (ch == 'a') << std::endl;
std::cout << "nocase 'a' == 'A' == " << std::boolalpha
<< (tr.translate_nocase('a') == tr.translate_nocase('A'))
<< std::endl;
const char *lbegin = "abc";
const char *lend = lbegin + strlen(lbegin);
Mytr::size_type size = tr.length(lbegin);
std::cout << "length(\"abc\") == " << size <<std::endl;
Mytr::string_type str = tr.transform(lbegin, lend);
std::cout << "transform(\"abc\") < \"abc\" == " << std::boolalpha
<< (str < "abc") << std::endl;
const char *ubegin = "ABC";
const char *uend = ubegin + strlen(ubegin);
std::cout << "primary \"ABC\" < \"abc\" == " << std::boolalpha
<< (tr.transform_primary(ubegin, uend) <
tr.transform_primary(lbegin, lend))
<< std::endl;
const char *dig = "digit";
Mytr::char_class_type cl = tr.lookup_classname(dig, dig + 5);
std::cout << "class digit == d == " << std::boolalpha
<< (cl == tr.lookup_classname(dig, dig + 1))
<< std::endl;
std::cout << "'3' is digit == " <<std::boolalpha
<< tr.isctype('3', tr.lookup_classname(dig, dig + 5))
<< std::endl;
std::cout << "hex C == " << tr.value('C', 16) << std::endl;
// other members
str = tr.lookup_collatename(dig, dig + 5);
Mytr::locale_type loc = tr.getloc();
tr.imbue(loc);
return (0);
}
translate('a') == 'a' == true
nocase 'a' == 'A' == true
length("abc") == 3
transform("abc") < "abc" == false
primary "ABC" < "abc" == false
class digit == d == true
'3' is digit == true
hex C == 12
regex_traits::char_class_type
The type of character class designators.
typedef T8 char_class_type;
Remarks
The type is a synonym for an unspecified type that designates character classes. Values of this type can be combined using the |
operator to designate character classes that are the union of the classes designated by the operands.
regex_traits::char_type
The type of an element.
typedef Elem char_type;
Remarks
The typedef is a synonym for the template argument Elem
.
regex_traits::getloc
Returns the stored locale object.
locale_type getloc() const;
Remarks
The member function returns the stored locale
object.
regex_traits::imbue
Alters the stored locale object.
locale_type imbue(locale_type loc);
Parameters
loc
The locale object to store.
Remarks
The member function copies loc to the stored locale
object and returns a copy of the previous value of the stored locale
object.
regex_traits::isctype
Tests for class membership.
bool isctype(char_type ch, char_class_type cls) const;
Parameters
ch
The element to test.
cls
The classes to test for.
Remarks
The member function returns true only if the character ch is in the character class designated by cls.
regex_traits::length
Returns the length of a null-terminated sequence.
static size_type length(const char_type *str);
Parameters
str
The null-terminated sequence.
Remarks
The static member function returns std::char_traits<char_type>::length(str)
.
regex_traits::locale_type
The type of the stored locale object.
typedef T7 locale_type;
Remarks
The typedef is a synonym for a type that encapsulates locales. In the specializations regex_traits<char>
and regex_traits<wchar_t>
it is a synonym for std::locale
.
regex_traits::lookup_classname
Maps a sequence to a character class.
template <class FwdIt>
char_class_type lookup_classname(FwdIt first, FwdIt last) const;
Parameters
first
Beginning of sequence to look up.
last
End of sequence to look up.
Remarks
The member function returns a value that designates the character class named by the character sequence pointed to by its arguments. The value does not depend on the case of the characters in the sequence.
The specialization regex_traits<char>
recognizes the names "d"
, "s"
, "w"
, "alnum"
, "alpha"
, "blank"
, "cntrl"
, "digit"
, "graph"
, "lower"
, "print"
, "punct"
, "space"
, "upper"
, and "xdigit"
, all without regard to case.
The specialization regex_traits<wchar_t>
recognizes the names L"d"
, L"s"
, L"w"
, L"alnum"
, L"alpha"
, L"blank"
, L"cntrl"
, L"digit"
, L"graph"
, L"lower"
, L"print"
, L"punct"
, L"space"
, L"upper"
, and L"xdigit"
, all without regard to case.
regex_traits::lookup_collatename
Maps a sequence to a collating element.
template <class FwdIt>
string_type lookup_collatename(FwdIt first, FwdIt last) const;
Parameters
first
Beginning of sequence to look up.
last
End of sequence to look up.
Remarks
The member function returns a string object containing the collating element corresponding to the sequence [first, last)
, or an empty string if the sequence is not a valid collating element.
regex_traits::regex_traits
Constructs the object.
regex_traits();
Remarks
The constructor constructs an object whose stored locale
object is initialized to the default locale.
regex_traits::size_type
The type of a sequence length.
typedef T6 size_type;
Remarks
The typedef is a synonym for an unsigned integral type. In the specializations regex_traits<char>
and regex_traits<wchar_t>
it is a synonym for std::size_t
.
The typedef is a synonym for std::size_t
.
regex_traits::string_type
The type of a string of elements.
typedef basic_string<Elem> string_type;
Remarks
The typedef is a synonym for basic_string<Elem>
.
regex_traits::transform
Converts to equivalent ordered sequence.
template <class FwdIt>
string_type transform(FwdIt first, FwdIt last) const;
Parameters
first
Beginning of sequence to transform.
last
End of sequence to transform.
Remarks
The member function returns a string that it generates by using a transformation rule that depends on the stored locale
object. For two character sequences designated by the iterator ranges [first1, last1)
and [first2, last2)
, transform(first1, last1) < transform(first2, last2)
if the character sequence designated by the iterator range [first1, last1)
sorts before the character sequence designated by the iterator range [first2, last2)
.
regex_traits::transform_primary
Converts to equivalent caseless ordered sequence.
template <class FwdIt>
string_type transform_primary(FwdIt first, FwdIt last) const;
Parameters
first
Beginning of sequence to transform.
last
End of sequence to transform.
Remarks
The member function returns a string that it generates by using a transformation rule that depends on the stored locale
object. For two character sequences designated by the iterator ranges [first1, last1)
and [first2, last2)
, transform_primary(first1, last1) < transform_primary(first2, last2)
if the character sequence designated by the iterator range [first1, last1)
sorts before the character sequence designated by the iterator range [first2, last2)
without regard for case or accents.
regex_traits::translate
Converts to equivalent matching element.
char_type translate(char_type ch) const;
Parameters
ch
The element to convert.
Remarks
The member function returns a character that it generates by using a transformation rule that depends on the stored locale
object. For two char_type
objects ch1
and ch2
, translate(ch1) == translate(ch2)
only if ch1
and ch2
should match when one occurs in the regular expression definition and the other occurs at a corresponding position in the target sequence for a locale-sensitive match.
regex_traits::translate_nocase
Converts to equivalent caseless matching element.
char_type translate_nocase(char_type ch) const;
Parameters
ch
The element to convert.
Remarks
The member function returns a character that it generates by using a transformation rule that depends on the stored locale
object. For two char_type
objects ch1
and ch2
, translate_nocase(ch1) == translate_nocase(ch2)
only if ch1
and ch2
should match when one occurs in the regular expression definition and the other occurs at a corresponding position in the target sequence for a case-insensitive match.
regex_traits::value
Converts an element to a digit value.
int value(Elem ch, int radix) const;
Parameters
ch
The element to convert.
radix
The arithmetic base to use.
Remarks
The member function returns the value represented by the character ch in the base radix, or -1 if ch is not a valid digit in the base radix. The function will only be called with a radix argument of 8, 10, or 16.
See also
<regex>
regex_constants Class
regex_error Class
<regex> functions
regex_iterator Class
<regex> operators
regex_token_iterator Class
<regex> typedefs
regex_traits<char> Class
regex_traits<wchar_t> Class