std::char_traits
Материал из cppreference.com
| Определено в заголовочном файле <string>
|
||
| template< class CharT |
||
Класс 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 |
| Этот раздел не завершён Причина: simplify the description, emphasize that char_traits can be user defined |
Содержание |
[править] Типы-члены
| Тип | Definition |
char_type
|
CharT
|
int_type
|
целочисленный тип, который может вместить все значения char_type плюс EOF
|
off_type
|
Определяется реализацией |
pos_type
|
Определяется реализацией |
state_type
|
Определяется реализацией |
[править] Функции-члены
| [static] |
назначает символ Оригинал: assigns a character Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public static функция-член) |
| [static] |
сравнивает два символа Оригинал: compares two characters Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public static функция-член) |
| [static] |
перемещается на одну последовательность символов на другую Оригинал: moves one character sequence onto another Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public static функция-член) |
| [static] |
копирует последовательность символов Оригинал: copies a character sequence Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public static функция-член) |
| [static] |
лексикографически сравнивает две последовательности символов Оригинал: lexicographically compares two character sequences Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public static функция-член) |
| [static] |
возвращает длину символьной последовательности Оригинал: returns the length of a character sequence Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public static функция-член) |
| [static] |
finds a character in a character sequence (public static функция-член) |
| [static] |
преобразует int_type эквивалентные char_typeОригинал: converts int_type to equivalent char_typeТекст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public static функция-член) |
| [static] |
преобразует char_type эквивалентные int_typeОригинал: converts char_type to equivalent int_typeТекст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public static функция-член) |
| [static] |
сравнивает два значения int_typeОригинал: compares two int_type valuesТекст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public static функция-член) |
| [static] |
возвращает EOF' значение Оригинал: returns an eof value Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public static функция-член) |
| [static] |
проверки, является ли символ EOF' значение Оригинал: checks whether a character is eof value Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public static функция-член) |
[править] Пример
Определенные пользователем свойства символов могут быть использованы, чтобы реализовать регистро-независимое сравнение
Запустить этот код
#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
[править] См. также
| хранит и управляет последовательностями символов (шаблон класса) | |