如何在C代码中引用一个汉字

How to refer to a Chinese character in C code

我有一个 C 程序,目前可以读取中文文本并将它们存储为 type wchar_t。我想做的是在文本中查找特定字符,但我不确定如何在代码中引用该字符。

我主要想说的是:

wchar_t character;

if (character == 个) {
    return 1;
}

else return 0;

显然省略了一些逻辑。我将如何在 C 中对中文执行这样的逻辑?

编辑:开始工作了。此代码使用 -std=c99 进行编译,并打印出字符“个”。

1 #include <locale.h>
2 #include <stdio.h>
3 #include <wchar.h>
4 
5 
6 int main() {
7         wchar_t test[] = L"\u4E2A";
8         setlocale(LC_ALL, "");
9         printf("%ls", test);
10 }

根据您的编译器,如果它允许使用支持的 Unicode 编码的源代码,您可以只与实际符号进行比较,否则,您可以使用宽字符常量:

#include <stdio.h>

int main()
{
    int i;
    wchar_t chinese[] = L"我不是中国人。";
    for(i = 0; chinese[i]; ++i)
    {
        if(chinese[i] == L'不')
            printf("found\n");
        if(chinese[i] == L'\u4E0D')
            printf("also found\n");
    }
}

注意宽字符 stringL"xxx" 而宽字符是 L'x'。可以使用 \uXXXX.

指定 Unicode BMP 代码点

仅供参考,我使用 Visual Stdio 2012 编译,源编码为 UTF-8 和 BOM、UTF-16(小端)和 UTF-16(大端)。没有 BOM 的 UTF-8 不工作。