std::char_traits
Материал из cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| Заголовочный файл <string>
|
||
| template< class CharT |
||
char_traits класс определяет поток и свойства строки работе тип характера, такие, как типы, используемые для манипулирования символов и строк, а также все основные операции для данного типа символов.Original:
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.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Существует шаблон класса
char_traits определен, которая служит основой для явного экземпляров. Он отвечает всем требованиям концепции Traits.Original:
There is class template
char_traits defined, which serves as a basis for explicit instantiations. It fulfills all requirements of Traits concept.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Кроме того, несколько специализаций определены для наиболее распространенных типов характера, который должен указать следующие элементы:
Original:
Also, several specializations are defined for most common character types which which has to specify the following members:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
| 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 |
Содержание |
[править] Член типов
| Type
Original: Type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
char_type
|
CharT
|
int_type
|
целого типа, который может вместить всех значений
char_type плюс EOFOriginal: an integer type that can hold all values of char_type plus EOFThe text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
off_type
|
Определяется реализацией
Original: implementation-defined The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
pos_type
|
Определяется реализацией
Original: implementation-defined The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
state_type
|
Определяется реализацией
Original: implementation-defined The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[править] Член функций
| [static] |
назначает характер Original: assigns a character The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static функция-член) |
| [static] |
сравнивает два символа Original: compares two characters The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static функция-член) |
| [static] |
перемещается на одну последовательность символов на другую Original: moves one character sequence onto another The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static функция-член) |
| [static] |
копирует последовательность символов Original: copies a character sequence The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static функция-член) |
| [static] |
лексикографически сравнивает две последовательности символов Original: lexicographically compares two character sequences The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static функция-член) |
| [static] |
возвращает длину символьной последовательности Original: returns the length of a character sequence The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static функция-член) |
| [static] |
finds a character in a character sequence (public static функция-член) |
| [static] |
преобразует int_type эквивалентные char_typeOriginal: converts int_type to equivalent char_typeThe text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static функция-член) |
| [static] |
преобразует char_type эквивалентные int_typeOriginal: converts char_type to equivalent int_typeThe text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static функция-член) |
| [static] |
сравнивает два значения int_typeOriginal: compares two int_type valuesThe text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static функция-член) |
| [static] |
возвращает EOF' значение Original: returns an eof value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static функция-член) |
| [static] |
проверки, является ли символ EOF' значение Original: checks whether a character is eof value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static функция-член) |
[править] Пример
Пользовательский черты характера могут быть использованы для обеспечения case-insensitive comparison
Original:
User-defined character traits may be used to provide case-insensitive comparison
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#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 ne(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
[править] См. также
| магазины и манипулирует последовательности символов Original: stores and manipulates sequences of characters The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (шаблон класса) | |