char_traits(3C++) - char_traits(3C++)
Standard C++ Library Copyright 1998, Rogue Wave Software, Inc.
NAMEchar_traits
- A traits class with types and operations for the basic_string con‐
tainer and iostream classes.
SYNOPSIS
#include <string>
template<class charT>
struct char_traitsDESCRIPTION
The template structure_char_traits<charT>_defines the types and func‐
tions necessary to implement the iostreams and string_template classes.
It is templatized on charT, which represents the character container
type. Each specialized version of char_traits<charT>_includes the
default definitions corresponding to the specialized character con‐
tainer type.
Users have to provide specialization for_char_traits if they use char‐
acter types other than char and wchar_t.
INTERFACE
template<class charT>
struct char_traits {
typedef charT char_type;
typedef INT_T int_type;
typedef POS_T pos_type;
typedef OFF_T off_type;
typedef STATE_T state_type;
static char_type to_char_type(const int_type&);
static int_type to_int_type(const char_type&);
static bool eq(const char_type&,const char_type&);
static bool eq_int_type(const int_type&,
const int_type&);
static int_type eof();
static int_type not_eof(const int_type&);
static void assign(char_type&,
const char_type&);
static bool lt(const char_type&,
const char_type&);
static int compare(const char_type*,
const char_type*,size_t);
static size_t length(const char_type*);
static const char_type* find(const char_type*,int n,
const char_type&);
static char_type* move(char_type*,
const char_type*,size_t);
static char_type* copy(char_type*,const char_type*,
size_t);
static char_type* assign(char_type*,size_t,
const char_type&);
};
TYPES
char_type
The type char_type represents the character container type. It must be con‐
vertible to int_type.
int_type
The type int_type is another character container type that can also hold an
end-of-file value. It is used as the return type of some of the iostream
class member functions. If char_type is either char or wchar_t, int_type is
int or wint_t, respectively.
off_type
The type off_type represents offsets to positional information. It is used
to represent:
- A signed displacement, measured in characters, from a specified
position within a sequence.
- An absolute position within a sequence.
The value off_type(-1) can be used as an error indicator. Value of type
off_type can be converted to type pos_type, but no validity of the result‐
ing pos_type value is ensured.
If char_type is either char or wchar_t, off_type is streamoff or
wstreamoff, respectively.
pos_type
The type pos_type describes an object that can store all the information
necessary to restore an arbitrary sequence to a previous stream position
and conversion state. The conversion pos_type(off_type(-1)) constructs the
invalid pos_type value to signal error.
If char_type is either char or wchar_t, pos_type is streampos or wstream‐
pos, respectively.
state_type
The type state_type holds the conversion state, and is compatible with the
function locale::codecvt().
If char_type is either char or wchar_t, state_type is mbstate_t.
TYPES DEFAULT-VALUES
SPECIALIZATION TYPE ON CHAR ON WCHAR_T
char_type char wchar_t
int_type int wint_t
off_type streamoff wstreamoff
pos_type streampos wstreampos
state_type mbstate_t mbstate_t
VALUE FUNCTIONS
void
assign(char_type& c1, const char_type& c2);
Assigns one character value to another. The value of c2 is assigned to c1.
char_type*assign(char_type* s, size_t n, const char_type& a);
Assigns one character value to n elements of a character array. The value
of a is assigned to n elements of s.
char_type*copy(char_type* s1, const char_type* s2, size_t n);
Copies n characters from the object pointed to by s1 into the object
pointed to by s2. The ranges of (s1,s1+n) and (s2,s2+n) may not overlap.
int_typeeof();
Returns an int_type value that represents the end-of-file. It is returned
by several functions to indicate end-of-file state, or to indicate an
invalid return value.
const char_type*find(const char_type* s, int n, const char_type& a);
Looks for the value of a in s. Only n elements of s are examined. Returns a
pointer to the matched element if one is found. Otherwise returns 0.
size_tlength(const char_type* s);
Returns the length of a null terminated character string pointed to by s.
char_type*move(char_type* s1, const char_type* s2, size_t n);
Moves n characters from the object pointed to by s1 into the object pointed
to by s2. The ranges of (s1,s1+n) and (s2,s2+n) may overlap.
int_typenot_eof(const int_type& c);
Returns c if c is not equal to the end-of-file value. Otherwise returns 0.
TEST FUNCTIONS
int
compare(const char_type* s1,const char_type* s2,size_t n);
Compares n values from s1 with n values from s2. Returns 1 if s1 is greater
than s2, -1 if s1 is less than s2, or 0 if they are equal.
booleq(const char_type& c1, const char_type& c2);
Returns true if c1 and c2 represent the same character.
booleq_int_type(const int_type& c1, const int_type& c2);
Returns true if c1 and c2 are equal.
boollt(const char_type& c1,const char_type& c2);
Returns true if c1 is less than c2.
CONVERSION FUNCTIONS
char_type
to_char_type(const int_type& c);
Converts a valid character represented by a value of type int_type to the
corresponding char_type value.
int_typeto_int_type(const char_type& c);
Converts a valid character represented by a value of type char_type to the
corresponding int_type value.
SEE ALSO
iosfwd(3C++), fpos(3C++)
Working Paper for Draft Proposed International Standard for Information
Systems--Programming Language C++, Section 21.1.4, 21.1.5, 27.1.2.
STANDARDS CONFORMANCE
ANSI X3J16/ISO WG21 Joint C++ Committee
Rogue Wave Software 02 Apr 1998 char_traits(3C++)