我有一个 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");
}
}
注意宽字符串是
L"xxx"
而宽字符是 L'x'
. Unicode BMP 代码点可以用 \uXXXX
指定.仅供引用,我使用带有 BOM、UTF-16(小端)和 UTF-16(大端)的 UTF-8 源编码编译了 Visual Stdio 2012。没有 BOM 的 UTF-8 不起作用。
关于c - 如何在C代码中引用一个汉字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29724599/