3

for 中定义的 char 函数(ispace、isalpha 等)是否有任何等价<ctype>char32_t

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

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

例子:

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

将输出“那是一个空格!”

4

2 回答 2

3

wchar_t您可以将std::isalpha与in 中定义的适当语言环境一起使用<locale>

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

u_isalphau_isUAlphabetic

u_isspaceu_isUWhiteSpace

完整的函数列表:uchar.h

于 2020-02-22T17:51:14.563 回答
0

虽然 C++-the-language 具有生成 Unicode 值的工具,但 C++-the-library 几乎对 Unicode 完全充耳不闻。<ctype.h>并且<cctype>不知道如何处理 Unicode 值;它们的功能基于C 语言环境机制。您的实现可能会提供知道 Unicode 是什么的语言环境,但"C"默认的语言环境不是其中之一。

于 2020-02-22T16:20:51.090 回答