<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 库:
完整函数列表:uchar.h
在 <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 库:
完整函数列表:uchar.h