Пространства имён
Варианты
Действия

std::char_traits

Материал из cppreference.com
< cpp‎ | string
Определено в заголовочном файле <string>
template<

    class CharT

> class char_traits;

Класс char_traits определяет поток и свойства строковых операций для символьного типа, такие как типы для управления символами, символьными строками и общие операции по работе с символьным типом.

Также определен шаблон класса char_traits, который используется как базовый для явного инстанцирования. Он удовлетворяет всем требованиям концепции Traits.

Кроме того, определены несколько специализаций для часто используемых типов символов, для которых заданы следующие члены:

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

Содержание

[править] Типы-члены

Тип Definition
char_type CharT
int_type целочисленный тип, который может вместить все значения char_type плюс EOF
off_type Определяется реализацией
pos_type Определяется реализацией
state_type Определяется реализацией

[править] Функции-члены

[static]
назначает характер
Оригинал:
assigns a character
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public static функция-член) [edit]
[static]
сравнивает два символа
Оригинал:
compares two characters
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public static функция-член) [edit]
[static]
перемещается на одну последовательность символов на другую
Оригинал:
moves one character sequence onto another
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public static функция-член) [edit]
[static]
копирует последовательность символов
Оригинал:
copies a character sequence
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public static функция-член) [edit]
[static]
лексикографически сравнивает две последовательности символов
Оригинал:
lexicographically compares two character sequences
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public static функция-член) [edit]
[static]
возвращает длину символьной последовательности
Оригинал:
returns the length of a character sequence
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public static функция-член) [edit]
[static]
finds a character in a character sequence
(public static функция-член) [edit]
преобразует int_type эквивалентные char_type
Оригинал:
converts int_type to equivalent char_type
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public static функция-член) [edit]
[static]
преобразует char_type эквивалентные int_type
Оригинал:
converts char_type to equivalent int_type
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public static функция-член) [edit]
[static]
сравнивает два значения int_type
Оригинал:
compares two int_type values
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public static функция-член) [edit]
[static]
возвращает EOF' значение
Оригинал:
returns an eof value
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public static функция-член) [edit]
[static]
проверки, является ли символ EOF' значение
Оригинал:
checks whether a character is eof value
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public static функция-член) [edit]

[править] Пример

Определенные пользователем свойства символов могут быть использованы, чтобы реализовать регистро-независимое сравнение

#include <string>
#include <iostream>
#include <cctype>
 
struct ci_char_traits : public std::char_traits<char> {
    static bool eq(char c1, char c2) {
         return std::toupper(c1) == std::toupper(c2);
     }
    static bool lt(char c1, char c2) {
         return std::toupper(c1) <  std::toupper(c2);
    }
    static int compare(const char* s1, const char* s2, size_t n) {
        while( n-- != 0 ) {
            if( std::toupper(*s1) < std::toupper(*s2) ) return -1;
            if( std::toupper(*s1) > std::toupper(*s2) ) return 1;
            ++s1; ++s2;
        }
        return 0;
    }
    static const char* find(const char* s, int n, char a) {
        while( n-- > 0 && std::toupper(*s) != std::toupper(a) ) {
            ++s;
        }
        return s;
    }
};
 
typedef std::basic_string<char, ci_char_traits> ci_string;
 
std::ostream& operator<<(std::ostream& os, const ci_string& str) {
    return os.write(str.data(), str.size());
}
 
int main()
{
    ci_string s1 = "Hello";
    ci_string s2 = "heLLo";
    if(s1 == s2)
        std::cout << s1 << " and " << s2 << " are equal\n";
}

Вывод:

Hello and heLLo are equal

[править] См. также

хранит и управляет последовательностями символов
(шаблон класса) [edit]