c_cpp 仅ASCII ctype.h实现(C11 / C ++ 11 char32_t)。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 仅ASCII ctype.h实现(C11 / C ++ 11 char32_t)。相关的知识,希望对你有一定的参考价值。

#ifndef ASCII_CTYPE_H
#define ASCII_CTYPE_H

#define ASCIIRANGE(c, start, len) (char32_t((c) - (start)) < char32_t(len))
inline bool aislower(char32_t c)  { return ASCIIRANGE(c, 0x61, 26); }
inline bool aisupper(char32_t c)  { return ASCIIRANGE(c, 0x41, 26); }
inline bool aisdigit(char32_t c)  { return ASCIIRANGE(c, 0x30, 10); }
inline bool aisbdigit(char32_t c) { return ASCIIRANGE(c, 0x30,  2); }
inline bool aisodigit(char32_t c) { return ASCIIRANGE(c, 0x30,  8); }
inline bool aisxdigit(char32_t c) { return ASCIIRANGE(c | 32, 0x61, 6) || aisdigit(c); }
inline bool aisalpha(char32_t c)  { return ASCIIRANGE(c | 32, 0x61, 26); }
inline bool aisprint(char32_t c)  { return ASCIIRANGE(c, 0x20, 95); } 
inline bool aisgraph(char32_t c)  { return ASCIIRANGE(c, 0x21, 94); }
inline bool aisspace(char32_t c)  { return ASCIIRANGE(c, 0x9, 5) || c == 0x20; }
inline bool aisalnum(char32_t c)  { return aisalpha(c) || aisdigit(c); }
inline bool aispunct(char32_t c)  { return !aisalnum(c) && aisgraph(c); } 
inline bool aisblank(char32_t c)  { return c == 0x20 || c ==  0x9; } 
inline bool aiscntrl(char32_t c)  { return c  < 0x20 || c == 0x7f; } 
inline char32_t atolower(char32_t c) { return isupper(c) ? c + 0x20 : c; } 
inline char32_t atoupper(char32_t c) { return islower(c) ? c - 0x20 : c; } 
#undef ASCIIRANGE

#endif

以上是关于c_cpp 仅ASCII ctype.h实现(C11 / C ++ 11 char32_t)。的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 我的ctype.h的实现

ctype.h字符函数和字符串

C 语言 ctype.h 中系列字符处理函数

c_cpp Mandelbrot集的ASCII图像

C柱状图(link_liststruct)

[ctype]c语言中的ctype.h系列的字符函数