std::char_traits
From cppreference.com
| Defined in header <string>
|
||
| template< class CharT |
||
The char_traits class defines the stream and string operation properties of a character type, such as the types used for manipulating the characters and character strings, as well as all the common operations for the given character type.
| This section is incomplete Reason: simplify the description, emphasize that char_traits can be user defined |
[edit] Member types
| Type | Definition |
| char_type | CharT |
| int_type | an integer type that can hold all values of char_type plus EOF |
| off_type | implementation-defined |
| pos_type | implementation-defined |
| state_type | implementation-defined |
[edit] Member functions
| Signature | Effects / Return value | Complexity |
|---|---|---|
| void assign(CharT &r, CharT a) noexcept | assigns r = a | constant |
| constexpr bool eq(CharT a, CharT b) noexcept | shall return true if a and b are equivalent | constant |
| constexpr bool lt( CharT a, CharT b ) noexcept | shall return true if a is less than b | constant |
| char_type *assign(CharT *p, size_t n, CharT a) | shall assign value a to character string [p, p+n). Shall return p | linear |
| char_type *move(CharT *p, const CharT *q, size_t n) | shall assign character string [q, q+n) to character string [p, p+n). Shall return p. Performs correctly even if [p, p+n) and [q, q+n) overlap. |
linear |
| char_type *copy(CharT *p, const CharT *q, size_t n) | shall assign character string [q, q+n) to character string [p, p+n). Shall return p. q shall not be in [p, p+n) |
linear |
| int compare(const CharT *p, const CharT *q, size_t n) | shall return 0 if character strings [p, p+n) and [q, q+n) are equal, shall return negative value if [p, p+n) is less than [q, q+n) and shall return positive value if [p, p+n) is greater than [q, q+n). The comparison is done lexicographically, using eq and lt functions. |
linear |
| size_t length(const char_type* s) | shall return the position of the terminating Char() (i.e. null-character) | linear |
| const char_type *find(const CharT *p, size_t n, CharT a) | shall return the pointer to the first character of value a in character string p | linear |
| constexpr char_type to_char_type(int_type a) noexcept | shall return equivalent value of char_type type. If there is no such value, return value is unspecified |
constant |
| constexpr int_type to_int_type(char_type a) noexcept | shall return equivalent value of int_type type. | constant |
| constexpr bool eq_int_type(int_type a, int_type b) noexcept | shall return false if one of a or b equals eof() and the other is not. Shall return true if a equals b. Return value is unspecified in other cases. |
constant |
| constexpr int_type eof() noexcept | shall return a value not equal to any value of type char_type | constant |
| constexpr bool not_eof(int_type a) noexcept | shall return false if a and eof() are equivalent | constant |
(constexpr and noexcept specification were added in C++11)
There is class template char_traits defined, which serves as a basis for explicit instantiations. It fulfills all requirements of Traits concept.
Also, several specializations are defined for most common character types which which has to specify the following members:
| Instantiation | char_type | int_type | off_type | pos_type | state_type |
|---|---|---|---|---|---|
| char_traits<char> | char | int | streamoff | streampos | mbstate_t |
| char_traits<wchar_t> | wchar_t | wint_t | wstreamoff | wstreampos | mbstate_t |
| char_traits<char16_t> (C++11) | char16_t | int_least16_t | streamoff | u16streampos | mbstate_t |
| char_traits<char32_t> (C++11) | char32_t | int_least32_t | streamoff | u32streampos | mbstate_t |
[edit] See also
| stores and manipulates sequences of characters (class template) | |