📄 cjkctype.cpp
字号:
string1 ++ ;
}
string1 ++ ;
}
string1 ++ ;
}
return NULL ;
}
////////////////////////////////////////////
// strstri () //
////////////////////////////////////////////
// 暥帤楍偐傜 ignore case 偱暥帤楍傪専嶕乮MULTIBYTE斉乯
char *mbsstri_cp ( const char *string1, const char *string2, int codepage ) {
size_t length1 = strlen ( string1 ) ;
size_t length2 = strlen ( string2 ) ;
if ( ! length2 ) return (char*) string1 ;
const char *tail = string1 + length1 - length2 ;
int c2 = tolower ( (unsigned char) *string2 ) ;
while ( string1 <= tail ) {
int c1 = tolower ( (unsigned char) *string1 ) ;
if ( c1 == c2 && ! mbsnicmp_cp ( string1, string2, length2, codepage ) ) return (char*) string1 ;
if ( ismbblead_cp ( (unsigned char) *string1, codepage ) ) {
if ( ismbbsurrogate_cp ( (unsigned char) *( string1 + 1 ), codepage ) ) {
string1 ++ ;
string1 ++ ;
}
string1 ++ ;
}
string1 ++ ;
}
return NULL ;
}
////////////////////////////////////////////
// strrstr () //
////////////////////////////////////////////
// 暥帤楍偺枛旜偐傜暥帤楍傪専嶕乮MULTIBYTE斉乯
char *mbsrstr_cp ( const char *string1, const char *string2, int codepage ) {
const char *result = NULL ;
size_t length1 = strlen ( string1 ) ;
size_t length2 = strlen ( string2 ) ;
if ( ! length2 ) return (char*) string1 ;
const char *tail = string1 + length1 - length2 ;
int c2 = (unsigned char) *string2 ;
while ( string1 <= tail ) {
int c1 = (unsigned char) *string1 ;
if ( c1 == c2 && ! strncmp ( string1, string2, length2 ) ) result = string1 ;
if ( ismbblead_cp ( (unsigned char) *string1, codepage ) ) {
if ( ismbbsurrogate_cp ( (unsigned char) *( string1 + 1 ), codepage ) ) {
string1 ++ ;
string1 ++ ;
}
string1 ++ ;
}
string1 ++ ;
}
return (char*) result ;
}
////////////////////////////////////////////
// strrstri () //
////////////////////////////////////////////
// 暥帤楍偺枛旜偐傜 ignore case 偱暥帤楍傪専嶕乮MULTIBYTE斉乯
char *mbsrstri_cp ( const char *string1, const char *string2, int codepage ) {
const char *result = NULL ;
size_t length1 = strlen ( string1 ) ;
size_t length2 = strlen ( string2 ) ;
if ( ! length2 ) return (char*) string1 ;
const char *tail = string1 + length1 - length2 ;
int c2 = tolower ( (unsigned char) *string2 ) ;
while ( string1 <= tail ) {
int c1 = tolower ( (unsigned char) *string1 ) ;
if ( c1 == c2 && ! mbsnicmp_cp ( string1, string2, length2, codepage ) ) result = string1 ;
if ( ismbblead_cp ( (unsigned char) *string1, codepage ) ) {
if ( ismbbsurrogate_cp ( (unsigned char) *( string1 + 1 ), codepage ) ) {
string1 ++ ;
string1 ++ ;
}
string1 ++ ;
}
string1 ++ ;
}
return (char*) result ;
}
////////////////////////////////////////////
// strchr () //
////////////////////////////////////////////
// 暥帤楍偐傜暥帤傪専嶕乮MULTIBYTE斉乯
char *mbschr_cp ( const char *string, int c, int codepage ) {
while ( *string ) {
if ( ismbblead_cp ( (unsigned char) *string, codepage ) ) {
if ( ismbbsurrogate_cp ( (unsigned char) *( string + 1 ), codepage ) ) {
if ( ! *( string + 2 ) || ! *( string + 3 ) ) break ;
int c1 = ( (unsigned char) *( string + 0 ) << 8 ) | (unsigned char) *( string + 1 ) ;
int c2 = ( (unsigned char) *( string + 2 ) << 8 ) | (unsigned char) *( string + 3 ) ;
if ( c == ( ( c1 << 16 ) | c2 ) ) return (char*) string ;
string ++ ;
string ++ ;
string ++ ;
string ++ ;
}
else {
if ( ! *( string + 1 ) ) break ;
if ( c == ( ( (unsigned char) *string << 8 ) | (unsigned char) *( string + 1 ) ) ) return (char*) string ;
string ++ ;
string ++ ;
}
}
else {
if ( c == (unsigned char) *string ) return (char*) string ;
string ++ ;
}
}
return NULL ;
}
////////////////////////////////////////////
// strchri () //
////////////////////////////////////////////
// 暥帤楍偐傜 ignore case 暥帤傪専嶕乮MULTIBYTE斉乯
char *mbschri_cp ( const char *string, int c, int codepage ) {
c = tolower ( c ) ;
while ( *string ) {
if ( ismbblead_cp ( (unsigned char) *string, codepage ) ) {
if ( ismbbsurrogate_cp ( (unsigned char) *( string + 1 ), codepage ) ) {
if ( ! *( string + 2 ) || ! *( string + 3 ) ) break ;
int c1 = ( (unsigned char) *( string + 0 ) << 8 ) | (unsigned char) *( string + 1 ) ;
int c2 = ( (unsigned char) *( string + 2 ) << 8 ) | (unsigned char) *( string + 3 ) ;
if ( c == ( ( c1 << 16 ) | c2 ) ) return (char*) string ;
string ++ ;
string ++ ;
string ++ ;
string ++ ;
}
else {
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 () //
////////////////////////////////////////////
// 暥帤楍偺枛旜偐傜暥帤傪専嶕乮MULTIBYTE斉乯
char *mbsrchr_cp ( const char *string, int c, int codepage ) {
const char *result = NULL ;
while ( *string ) {
if ( ismbblead_cp ( (unsigned char) *string, codepage ) ) {
if ( ismbbsurrogate_cp ( (unsigned char) *( string + 1 ), codepage ) ) {
if ( ! *( string + 2 ) || ! *( string + 3 ) ) break ;
int c1 = ( (unsigned char) *( string + 0 ) << 8 ) | (unsigned char) *( string + 1 ) ;
int c2 = ( (unsigned char) *( string + 2 ) << 8 ) | (unsigned char) *( string + 3 ) ;
if ( c == ( ( c1 << 16 ) | c2 ) ) result = string ;
string ++ ;
string ++ ;
string ++ ;
string ++ ;
}
else {
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 偱暥帤傪専嶕乮MULTIBYTE斉乯
char *mbsrchri_cp ( const char *string, int c, int codepage ) {
const char *result = NULL ;
c = tolower ( c ) ;
while ( *string ) {
if ( ismbblead_cp ( (unsigned char) *string, codepage ) ) {
if ( ismbbsurrogate_cp ( (unsigned char) *( string + 1 ), codepage ) ) {
if ( ! *( string + 2 ) || ! *( string + 3 ) ) break ;
int c1 = ( (unsigned char) *( string + 0 ) << 8 ) | (unsigned char) *( string + 1 ) ;
int c2 = ( (unsigned char) *( string + 2 ) << 8 ) | (unsigned char) *( string + 3 ) ;
if ( c == ( ( c1 << 16 ) | c2 ) ) result = string ;
string ++ ;
string ++ ;
string ++ ;
string ++ ;
}
else {
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 ;
}
////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -