<thing> 相当于 char32_t

is<thing> equivalents for char32_t

<ctype> 中为 char32_t 定义的 char 函数(ispace、isalpha 等)是否有任何等效项?

我环顾四周,只能看到 iswspace(及相关),它们看起来像是用于 16 位字符的。

注意:虽然 isspace 将 int 作为参数,但它似乎会为 Unicode 字符产生错误的结果。

示例:

char32_t dagger = U'';
if (isspace(dagger)) {
    puts("That is a space!");
}

会输出"That is a space!"

虽然 C++ 语言具有生成 Unicode 值的功能,但 C++ 库几乎完全不支持 Unicode。 <ctype.h><cctype> 不知道如何处理 Unicode 值;它们的功能基于 C locale mechanism。您的实现可能提供知道什么是 Unicode 的语言环境,但默认的 "C" 语言环境不是其中之一。

最多 wchar_t 您可以使用 std::isalpha<locale> 中定义的合适的语言环境。

对于高于 0xFFFF 的任何内容,您将需要 ICU 库:

u_isalpha or u_isUAlphabetic

u_isspace or u_isUWhiteSpace

完整函数列表:uchar.h