⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stringex.cpp

📁 This software performs code conversion of Chinese characters, including GB2312/GBK and BIG5. It a
💻 CPP
📖 第 1 页 / 共 5 页
字号:
      }
   }

   return NULL ;
}



// 暥帤楍偐傜 ignore case 暥帤傪専嶕乮UTF32斉乯
wchar32_t *wcschri32 ( const wchar32_t *string, int c ) {

   c = tolower ( c ) ;

   while ( *string || ! c ) {
      if ( c == tolower ( *string ) ) return (wchar32_t*) string ;
      string ++ ;
   }

   return NULL ;
}



// 暥帤楍偐傜 ignore case 暥帤傪専嶕乮MULTIBYTE斉乯
char *mbschri ( const char *string, int c ) {

   c = tolower ( c ) ;

   while ( *string || ! c ) {
      if ( ismbblead ( (unsigned char) *string ) ) {
         if ( ! *( string + 1 ) ) break ;
         if ( c == ( ( (unsigned char) *string << 8 ) + (unsigned char) *( string + 1 ) ) ) return (char*) string ;
         string ++ ;
         string ++ ;
      }
      else {
         if ( c == tolower ( (unsigned char) *string ) ) return (char*) string ;
         string ++ ;
      }
   }

   return NULL ;
}



////////////////////////////////////////////
//               strrchr ()               //
////////////////////////////////////////////



// 暥帤楍偺枛旜偐傜暥帤傪専嶕乮UTF16斉乯
wchar16_t *wcsrchr16 ( const wchar16_t *string, int c ) {

   if ( ! IsHighSurrogate ( (unsigned) c >> 16 ) ) {
      if ( (unsigned) c > UTF16_MAX ) return NULL ;
      c = MAKE_UNICODE_SURROGATE ( c ) ;
   }

   const wchar16_t *result = NULL ;

   while ( *string || ! c ) {
      if ( IsHighSurrogate ( *string ) ) {
         if ( ! *( string + 1 ) ) break ;
         if ( c == ( ( *string << 16 ) + *( string + 1 ) ) ) result = string ;
         string ++ ;
         string ++ ;
      }
      else {
         if ( c == *string ) result = string ;
         string ++ ;
      }
   }

   return (wchar16_t*) result ;
}



// 暥帤楍偺枛旜偐傜暥帤傪専嶕乮UTF32斉乯
wchar32_t *wcsrchr32 ( const wchar32_t *string, int c ) {

   const wchar32_t *result = NULL ;

   while ( *string || ! c ) {
      if ( (wchar32_t) c == *string ) result = string ;
      string ++ ;
   }

   return (wchar32_t*) result ;
}



// 暥帤楍偺枛旜偐傜暥帤傪専嶕乮MULTIBYTE斉乯
char *mbsrchr ( const char *string, int c ) {

   const char *result = NULL ;

   while ( *string || ! c ) {
      if ( ismbblead ( (unsigned char) *string ) ) {
         if ( ! *( string + 1 ) ) break ;
         if ( c == ( ( (unsigned char) *string << 8 ) + (unsigned char) *( string + 1 ) ) ) result = string ;
         string ++ ;
         string ++ ;
      }
      else {
         if ( c == (unsigned char) *string ) result = string ;
         string ++ ;
      }
   }

   return (char*) result ;
}



////////////////////////////////////////////
//               strrchri ()              //
////////////////////////////////////////////



// 暥帤楍偺枛旜偐傜 ignore case 偱暥帤傪専嶕乮ANSI斉乯
char *strrchri ( const char *string, int c ) {

   const char *result = NULL ;

   c = tolower ( c ) ;

   while ( *string || ! c ) {
      if ( c == tolower ( (unsigned char) *string ) ) result = string ;
      string ++ ;
   }

   return (char*) result ;
}



// 暥帤楍偺枛旜偐傜 ignore case 偱暥帤傪専嶕乮UNICODE斉乯
wchar_t *wcsrchri ( const wchar_t *string, int c ) {

   const wchar_t *result = NULL ;

   c = tolower ( c ) ;

   while ( *string || ! c ) {
      if ( c == tolower ( *string ) ) result = string ;
      string ++ ;
   }

   return (wchar_t*) result ;
}



// 暥帤楍偺枛旜偐傜 ignore case 偱暥帤傪専嶕乮UTF16斉乯
wchar16_t *wcsrchri16 ( const wchar16_t *string, int c ) {

   if ( ! IsHighSurrogate ( (unsigned) c >> 16 ) ) {
      if ( (unsigned) c > UTF16_MAX ) return NULL ;
      c = MAKE_UNICODE_SURROGATE ( c ) ;
   }

   c = tolower ( c ) ;

   const wchar16_t *result = NULL ;

   while ( *string || ! c ) {
      if ( IsHighSurrogate ( *string ) ) {
         if ( ! *( string + 1 ) ) break ;
         if ( c == ( ( *string << 16 ) + *( string + 1 ) ) ) result = string ;
         string ++ ;
         string ++ ;
      }
      else {
         if ( c == tolower ( *string ) ) result = string ;
         string ++ ;
      }
   }

   return (wchar16_t*) result ;
}



// 暥帤楍偺枛旜偐傜 ignore case 偱暥帤傪専嶕乮UTF32斉乯
wchar32_t *wcsrchri32 ( const wchar32_t *string, int c ) {

   const wchar32_t *result = NULL ;

   c = tolower ( c ) ;

   while ( *string || ! c ) {
      if ( c == tolower ( *string ) ) result = string ;
      string ++ ;
   }

   return (wchar32_t*) result ;
}



// 暥帤楍偺枛旜偐傜 ignore case 偱暥帤傪専嶕乮MULTIBYTE斉乯
char *mbsrchri ( const char *string, int c ) {

   const char *result = NULL ;

   c = tolower ( c ) ;

   while ( *string || ! c ) {
      if ( ismbblead ( (unsigned char) *string ) ) {
         if ( ! *( string + 1 ) ) break ;
         if ( c == ( ( (unsigned char) *string << 8 ) + (unsigned char) *( string + 1 ) ) ) result = string ;
         string ++ ;
         string ++ ;
      }
      else {
         if ( c == tolower ( (unsigned char) *string ) ) result = string ;
         string ++ ;
      }
   }

   return (char*) result ;
}



////////////////////////////////////////////
//                strspn ()               //
////////////////////////////////////////////



// string2 偵懏偝側偄暥帤偑 string1 偱嵟弶偵弌尰偡傞埵抲傪曉偡乮UTF32斉乯
// 尒偮偐傜側偗傟偽枛旜傪曉偡
size_t wcsspn32 ( const wchar32_t *string1, const wchar32_t *string2 ) {

   const wchar32_t *current ;

   for ( current = string1 ; *current ; current ++ ) {
      if ( ! wcschr32 ( string2, *current ) ) break ;
   }

   return current - string1 ;
}



// string2 偵懏偝側偄暥帤偑 string1 偱嵟弶偵弌尰偡傞埵抲傪曉偡乮MULTIBYTE斉乯
// 尒偮偐傜側偗傟偽枛旜傪曉偡
size_t mbsspn ( const char *string1, const char *string2 ) {

   int c ;
   const char *current ;

   for ( current = string1 ; *current ; current ++ ) {
      int islead = ismbblead ( (unsigned char) *current ) ;
      if ( islead ) c = ( (unsigned char) *current << 8 ) + (unsigned char) *( current + 1 ) ;
      else          c = *current ;
      if ( ! mbschr ( string2, c ) ) break ;
      if ( islead && *( current + 1 ) ) current ++ ;
   }

   return current - string1 ;
}



////////////////////////////////////////////
//                strcspn ()              //
////////////////////////////////////////////



// string2 偵懏偡暥帤偑 string1 偱嵟弶偵弌尰偡傞埵抲傪曉偡乮UTF32斉乯
// 尒偮偐傜側偗傟偽枛旜傪曉偡
size_t wcscspn32 ( const wchar32_t *string1, const wchar32_t *string2 ) {

   const wchar32_t *current ;

   for ( current = string1 ; *current ; current ++ ) {
      if ( wcschr32 ( string2, *current ) ) break ;
   }

   return current - string1 ;
}



// string2 偵懏偡暥帤偑 string1 偱嵟弶偵弌尰偡傞埵抲傪曉偡乮MULTIBYTE斉乯
// 尒偮偐傜側偗傟偽枛旜傪曉偡
size_t mbscspn ( const char *string1, const char *string2 ) {

   int c ;
   const char *current ;

   for ( current = string1 ; *current ; current ++ ) {
      int islead = ismbblead ( (unsigned char) *current ) ;
      if ( islead ) c = ( (unsigned char) *current << 8 ) + (unsigned char) *( current + 1 ) ;
      else          c = *current ;
      if ( mbschr ( string2, c ) ) break ;
      if ( islead && *( current + 1 ) ) current ++ ;
   }

   return current - string1 ;
}



////////////////////////////////////////////
//               strspnp ()               //
////////////////////////////////////////////



// string2 偵懏偝側偄暥帤偑 string1 偱嵟弶偵弌尰偡傞埵抲傪曉偡乮ANSI斉乯
// 尒偮偐傜側偗傟偽 NULL 傪曉偡
char *strspnp ( const char *string1, const char *string2 ) {
   const char *result = string1 + strspn ( string1, string2 ) ;
   return *result ? (char*) result : NULL ;
}



// string2 偵懏偝側偄暥帤偑 string1 偱嵟弶偵弌尰偡傞埵抲傪曉偡乮UNICODE斉乯
// 尒偮偐傜側偗傟偽 NULL 傪曉偡
wchar_t *wcsspnp ( const wchar_t *string1, const wchar_t *string2 ) {
   const wchar_t *result = string1 + wcsspn ( string1, string2 ) ;
   return *result ? (wchar_t*) result : NULL ;
}



// string2 偵懏偝側偄暥帤偑 string1 偱嵟弶偵弌尰偡傞埵抲傪曉偡乮UTF32斉乯
// 尒偮偐傜側偗傟偽 NULL 傪曉偡
wchar32_t *wcsspnp32 ( const wchar32_t *string1, const wchar32_t *string2 ) {
   const wchar32_t *result = string1 + wcsspn32 ( string1, string2 ) ;
   return *result ? (wchar32_t*) result : NULL ;
}



// string2 偵懏偝側偄暥帤偑 string1 偱嵟弶偵弌尰偡傞埵抲傪曉偡乮MULTIBYTE斉乯
// 尒偮偐傜側偗傟偽 NULL 傪曉偡
char *mbsspnp ( const char *string1, const char *string2 ) {
   const char *result = string1 + mbsspn ( string1, string2 ) ;
   return *result ? (char*) result : NULL ;
}



////////////////////////////////////////////
//               strpbrk ()               //
////////////////////////////////////////////



// string2 偵懏偡暥帤偑 string1 偱嵟弶偵弌尰偡傞埵抲傪曉偡乮UTF32斉乯
// 尒偮偐傜側偗傟偽 NULL 傪曉偡
wchar32_t *wcspbrk32 ( const wchar32_t *string1, const wchar32_t *string2 ) {
   const wchar32_t *result = string1 + wcscspn32 ( string1, string2 ) ;
   return *result ? (wchar32_t*) result : NULL ;
}



// string2 偵懏偡暥帤偑 string1 偱嵟弶偵弌尰偡傞埵抲傪曉偡乮MULTIBYTE斉乯
// 尒偮偐傜側偗傟偽 NULL 傪曉偡
char *mbspbrk ( const char *string1, const char *string2 ) {
   const char *result = string1 + mbscspn ( string1, string2 ) ;
   return *result ? (char*) result : NULL ;
}



////////////////////////////////////////////
//               strlwr ()                //
////////////////////////////////////////////



// 暥帤楍傪彫暥帤偵乮ANSI斉乯
char *strlwr ( char *string ) {

   for ( char *current = string ; *current ; current ++ ) {
      if ( *current >= 'A' && *current <= 'Z' ) *current -= 'A' - 'a' ;
   }

   return string ;
}



// 暥帤楍傪彫暥帤偵乮UNICODE斉乯
wchar_t *wcslwr ( wchar_t *string ) {

   for ( wchar_t *current = string ; *current ; current ++ ) {
      if ( *current >= 'A' && *current <= 'Z' ) *current -= 'A' - 'a' ;
   }

   return string ;
}



// 暥帤楍傪彫暥帤偵乮UTF32斉乯
wchar32_t *wcslwr32 ( wchar32_t *string ) {

   for ( wchar32_t *current = string ; *current ; current ++ ) {
      if ( *current >= 'A' && *current <= 'Z' ) *current -= 'A' - 'a' ;
   }

   return string ;
}



// 暥帤楍傪彫暥帤偵乮MULTIBYTE斉乯
char *mbslwr ( char *string ) {

   for ( char *current = string ; *current ; current ++ ) {
      if ( *current >= 'A' && *current <= 'Z' ) *current -= 'A' - 'a' ;
      if ( ismbblead ( (unsigned char) *current ) && *( current + 1 ) ) current ++ ;
   }

   return string ;
}



// 暥帤楍傪彫暥帤偵乮UNICODE斉乯
// U+00乣U+FF 偺暥帤偵懳墳
wchar_t *wcslwrex ( wchar_t *string ) {

   for ( wchar_t *current = string ; *current ; current ++ ) {
      if ( *current >= 'A' && *current <= 'Z' ) *current -= 'A' - 'a' ;
      else if ( *current >= 0xC0 && *current <= 0xDE && *current != 0xD7 ) *current += 0xE0 - 0xC0 ;
   }

   return string ;
}



////////////////////////////////////////////
//               strupr ()                //
////////////////////////////////////////////



// 暥帤楍傪戝暥帤偵乮ANSI斉乯
char *strupr ( char *string ) {

   for ( char *current = string ; *current ; current ++ ) {
      if ( *current >= 'a' && *current <= 'z' ) *current += 'A' - 'a' ;
   }

   return string ;
}



// 暥帤楍傪戝暥帤偵乮UNICODE斉乯
wchar_t *wcsupr ( wchar_t *string ) {

   for ( wchar_t *current = string ; *current ; current ++ ) {
      if ( *current >= 'a' && *current <= 'z' ) *current += 'A' - 'a' ;
   }

   return string ;
}



// 暥帤楍傪戝暥帤偵乮UTF32斉乯
wchar32_t *wcsupr32 ( wchar32_t *string ) {

   for ( wchar32_t *current = string ; *current ; current ++ ) {
      if ( *current >= 'a' && *current <= 'z' ) *current += 'A' - 'a' ;
   }

   return string ;
}



// 暥帤楍傪戝暥帤偵乮MULTIBYTE斉乯
char *mbsupr ( char *string ) {

   for ( char *current = string ; *current ; current ++ ) {
      if ( *current >= 'a' && *current <= 'z' ) *current += 'A' - 'a' ;
      if ( ismbblead ( (unsigned char) *current ) && *( current + 1 ) ) current ++ ;
   }

   return string ;
}



// 暥帤楍傪戝暥帤偵乮UNICODE斉乯

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -