# char_traits

Category: utilities | Component type: type

### Description

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

### Example

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.

### Definition

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

None.

### Members

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.

### Notes

### See also

Character Traits, `string`

Copyright © 1999 Silicon Graphics, Inc. All Rights Reserved. TrademarkInformation