如何在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");
}
}
注意宽字符 string 是 L"xxx"
而宽字符是 L'x'
。可以使用 \uXXXX
.
指定 Unicode BMP 代码点
仅供参考,我使用 Visual Stdio 2012 编译,源编码为 UTF-8 和 BOM、UTF-16(小端)和 UTF-16(大端)。没有 BOM 的 UTF-8 不工作。
我有一个 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");
}
}
注意宽字符 string 是 L"xxx"
而宽字符是 L'x'
。可以使用 \uXXXX
.
仅供参考,我使用 Visual Stdio 2012 编译,源编码为 UTF-8 和 BOM、UTF-16(小端)和 UTF-16(大端)。没有 BOM 的 UTF-8 不工作。