📄 mstl_char_traits.hpp
字号:
static char_type to_char_type( const int_type& i )
{ return static_cast<char_type>( i ); }
static int_type to_int_type( const char_type& c )
{ return static_cast<int_type>( c ); }
static bool eq_int_type( const int_type& i1, const int_type& i2 )
{ return ( i1 == i2 ); }
static int_type eof()
{ return static_cast<int_type>( WEOF ); }
static int_type not_eof( const int_type& i )
{ return ( i == eof() ? 0 : i ); }
static size_type length( const char_type* s )
{ return wcslen(s); }
static int compare( const char_type* s1, const char_type* s2, size_type count )
{ return wcharcmp_lower( s1, s2, count ); }
static char_type* copy( char_type* d, const char_type* s, size_type count )
{ return wmemcpy( d, s, count ); }
static char_type* move( char_type* d, const char_type* s, size_type count )
{ return wmemmove( d, s, count ); }
static char_type* assign( char_type* d, size_type count, const char_type& c )
{ return wmemset( d, c, count ); }
static const char_type*
find( const char_type* buf, size_type count, const char_type& c )
{ return wmemchr( buf, c, count ); }
}; //end cmp_no_case_wchar_traits
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
class lower_wchar_traits //全部是小写wchar_t的traits
{
public:
typedef wchar_t char_type;
typedef wint_t int_type;
typedef wstreamoff pos_type;
typedef wstreampos off_type;
typedef mbstate_t state_type;
typedef def_size_t size_type;
static char_type eos() { return 0; }
static bool is_del( char_type c ) { return iswspace(c); }
static void assign( char_type& d, const char_type& s )
{ d = towlower(s); }
static bool eq( const char_type& c1, const char_type& c2 )
{ return ( c1 == c2 ); }
static bool lt( const char_type& c1, const char_type& c2 )
{ return ( c1 < c2 ); }
static char_type to_char_type( const int_type& i )
{ return static_cast<char_type>( i ); }
static int_type to_int_type( const char_type& c )
{ return static_cast<int_type>( c ); }
static bool eq_int_type( const int_type& i1, const int_type& i2 )
{ return ( i1 == i2 ); }
static int_type eof()
{ return static_cast<int_type>( WEOF ); }
static int_type not_eof( const int_type& i )
{ return ( i == eof() ? 0 : i ); }
static size_type length( const char_type* s )
{ return wcslen(s); }
static int compare( const char_type* s1, const char_type* s2, size_type count )
{
int result = wmemcmp( s1, s2, count );
if( result == 0 )
return 0;
else
return ( result < 0 ? -1 : 1 );
}
static char_type* copy( char_type* d, const char_type* s, size_type count )
{ return wcharcopy_lower( d, s, count ); }
static char_type* move( char_type* d, const char_type* s, size_type count )
{ return wcharmove_lower( d, s, count ); }
static char_type* assign( char_type* d, size_type count, const char_type& c )
{ return wcharset_lower( d, c, count ); }
static const char_type*
find( const char_type* buf, size_type count, const char_type& c )
{ return wmemchr( buf, c, count ); }
}; //end lower_wchar_traits
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
class upper_wchar_traits //全部是大写wchar_t的traits
{
public:
typedef wchar_t char_type;
typedef wint_t int_type;
typedef wstreamoff pos_type;
typedef wstreampos off_type;
typedef mbstate_t state_type;
typedef def_size_t size_type;
static char_type eos() { return 0; }
static bool is_del( char_type c ) { return iswspace(c); }
static void assign( char_type& d, const char_type& s )
{ d = towupper(s); }
static bool eq( const char_type& c1, const char_type& c2 )
{ return ( c1 == c2 ); }
static bool lt( const char_type& c1, const char_type& c2 )
{ return ( c1 < c2 ); }
static char_type to_char_type( const int_type& i )
{ return static_cast<char_type>( i ); }
static int_type to_int_type( const char_type& c )
{ return static_cast<int_type>( c ); }
static bool eq_int_type( const int_type& i1, const int_type& i2 )
{ return ( i1 == i2 ); }
static int_type eof()
{ return static_cast<int_type>( WEOF ); }
static int_type not_eof( const int_type& i )
{ return ( i == eof() ? 0 : i ); }
static size_type length( const char_type* s )
{ return wcslen(s); }
static int compare( const char_type* s1, const char_type* s2, size_type count )
{
int result = wmemcmp( s1, s2, count );
if( result == 0 )
return 0;
else
return ( result < 0 ? -1 : 1 );
}
static char_type* copy( char_type* d, const char_type* s, size_type count )
{ return wcharcopy_upper( d, s, count ); }
static char_type* move( char_type* d, const char_type* s, size_type count )
{ return wcharmove_upper( d, s, count ); }
static char_type* assign( char_type* d, size_type count, const char_type& c )
{ return wcharset_upper( d, c, count ); }
static const char_type*
find( const char_type* buf, size_type count, const char_type& c )
{ return wmemchr( buf, c, count ); }
}; //end upper_wchar_traits
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//字符串内全部是小写wchar_t并且和其他字符串进行比较时不区分大小写的traits
class cmp_no_case_lower_wchar_traits
{
public:
typedef wchar_t char_type;
typedef wint_t int_type;
typedef wstreamoff pos_type;
typedef wstreampos off_type;
typedef mbstate_t state_type;
typedef def_size_t size_type;
static char_type eos() { return 0; }
static bool is_del( char_type c ) { return iswspace(c); }
static void assign( char_type& d, const char_type& s )
{ d = towlower(s); }
static bool eq( const char_type& c1, const char_type& c2 )
{ return ( towlower(c1) == towlower(c2) ); }
static bool lt( const char_type& c1, const char_type& c2 )
{ return ( towlower(c1) < towlower(c2) ); }
static char_type to_char_type( const int_type& i )
{ return static_cast<char_type>( i ); }
static int_type to_int_type( const char_type& c )
{ return static_cast<int_type>( c ); }
static bool eq_int_type( const int_type& i1, const int_type& i2 )
{ return ( i1 == i2 ); }
static int_type eof()
{ return static_cast<int_type>( WEOF ); }
static int_type not_eof( const int_type& i )
{ return ( i == eof() ? 0 : i ); }
static size_type length( const char_type* s )
{ return wcslen(s); }
static int compare( const char_type* s1, const char_type* s2, size_type count )
{ return wcharcmp_lower( s1, s2, count ); }
static char_type* copy( char_type* d, const char_type* s, size_type count )
{ return wcharcopy_lower( d, s, count ); }
static char_type* move( char_type* d, const char_type* s, size_type count )
{ return wcharmove_lower( d, s, count ); }
static char_type* assign( char_type* d, size_type count, const char_type& c )
{ return wcharset_lower( d, c, count ); }
static const char_type*
find( const char_type* buf, size_type count, const char_type& c )
{ return wmemchr( buf, c, count ); }
}; //end cmp_no_case_lower_wchar_traits
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//字符串内全部是大写wchar_t并且和其他字符串进行比较时不区分大小写的traits
class cmp_no_case_upper_wchar_traits
{
public:
typedef wchar_t char_type;
typedef wint_t int_type;
typedef wstreamoff pos_type;
typedef wstreampos off_type;
typedef mbstate_t state_type;
typedef def_size_t size_type;
static char_type eos() { return 0; }
static bool is_del( char_type c ) { return iswspace(c); }
static void assign( char_type& d, const char_type& s )
{ d = towupper(s); }
static bool eq( const char_type& c1, const char_type& c2 )
{ return ( towupper(c1) == towupper(c2) ); }
static bool lt( const char_type& c1, const char_type& c2 )
{ return ( towupper(c1) < towupper(c2) ); }
static char_type to_char_type( const int_type& i )
{ return static_cast<char_type>( i ); }
static int_type to_int_type( const char_type& c )
{ return static_cast<int_type>( c ); }
static bool eq_int_type( const int_type& i1, const int_type& i2 )
{ return ( i1 == i2 ); }
static int_type eof()
{ return static_cast<int_type>( WEOF ); }
static int_type not_eof( const int_type& i )
{ return ( i == eof() ? 0 : i ); }
static size_type length( const char_type* s )
{ return wcslen(s); }
static int compare( const char_type* s1, const char_type* s2, size_type count )
{ return wcharcmp_upper( s1, s2, count ); }
static char_type* copy( char_type* d, const char_type* s, size_type count )
{ return wcharcopy_upper( d, s, count ); }
static char_type* move( char_type* d, const char_type* s, size_type count )
{ return wcharmove_upper( d, s, count ); }
static char_type* assign( char_type* d, size_type count, const char_type& c )
{ return wcharset_upper( d, c, count ); }
static const char_type*
find( const char_type* buf, size_type count, const char_type& c )
{ return wmemchr( buf, c, count ); }
}; //end cmp_no_case_upper_wchar_traits
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
__MACRO_CPLUSPLUS_MINI_STL_END_NAMESPACE__
#endif
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -