Category: utilities Component type: type


The char_traits class is the default Character Traits class used by the library; it is the only predefined Character Traits class.


The char_traits class is of no use by itself. It is used as a template parameter of other classes, such as the basic_string template.


Defined in the standard header string.

Template parameters

Parameter Description Default
charT char_traits's value type, i.e. char_traits<>::char_type.  

Model of

Character Traits

Type requirements

charT is either char or wchar_t.

(All of char_traits's member functions are defined for arbitrary types, but some of char_traits's members must be explicitly specialized if char_traits is to be useful for other types than char and wchar_t.

Public base classes



All of char_traits's members are static. There is never any reason to create an object of type char_traits.
Member Where defined Description
char_type Character Traits char_traits's value type: charT.
int_type Character Traits char_traits's int type.
pos_type Character Traits char_traits's position type.
off_type Character Traits char_traits's offset type
state_type Character Traits char_traits's state type.
static void assign(char_type& c1, const char_type& c2) Character Traits Assigns c2 to c1.
static bool eq(const char_type& c1, const char_type& c2) Character Traits Character equality.
static bool lt(const char_type& c1, const char_type& c2) Character Traits Returns true if c1 is less than c2.
static int compare(const char_type* p1, const char_type* p2, size_t n) Character Traits Three-way lexicographical comparison, much like strncmp.
Length static size_t length(const char* p) Returns length of a null-terminated array of characters.
static const char_type* find(const char_type* p, size_t n, const char_type& c) Character Traits Finds c in [p, p+n), returning 0 if not found.
static char_type* move(char_type* s, const char_type* p, size_t n) Character Traits Copies characters from [p, p+n) to the (possibly overlapping) range [s, s+n).
static char_type* copy(char_type* s, const char_type* p, size_t n) Character Traits Copies characters from [p, p+n) to the (non-overlapping) range [s, s+n).
static char_type* assign(char_type* s, size_t n, char_type c) Character Traits Assigns the value c to every element in the range [s, s+n).
static int_type eof() Character Traits Returns the value used as an EOF indicator.
static int_type not_eof(const int_type& c) Character Traits Returns a value that is not equal to eof(). Returns c unless c is equal to eof().
static char_type to_char_type(const int_type& c) Character Traits Returns the char_type value corresponding to c, if such a value exists.
static int_type to_int_type(const char_type& c) Character Traits Returns a int_type representation of c.
static bool eq_int_type(cosnt int_type& c1, const int_type& c1) Character Traits Tests whether two int_type values are equal. If the values can also be represented as char_type, then eq and eq_int_type must be consistent with each other.

New members

None. All of char_traits's members are defined in the Character Traits requirements.


See also

Character Traits, string
[Silicon Surf] [STL Home]
Copyright © 1999 Silicon Graphics, Inc. All Rights Reserved. TrademarkInformation