流行的软件开发人员和公司(Joel Spolsky, Fog Creek software)倾向于编写C或C++代码时使用wchar_t的为Unicode字符存储。关于良好的编码习惯,何时以及如何使用char和wchar_t?正确使用字符串存储在C和C++
我特别感兴趣的是在编写利用Unicode的软件时符合POSIX。
当使用wchar_t的,您可以查找字符的宽字符数组中的每个字符或每个数组元素的基础上:
/* C code fragment */
const wchar_t *overlord = L"ov€rlord";
if (overlord[2] == L'€')
wprintf(L"Character comparison on a per-character basis.\n");
你如何比较的Unicode字节(或字符)使用时char?
到目前为止,我的首选用C比较型字符的字符串和字符的方式往往是这样的:
/* C code fragment */
const char *mail[] = { "ov€[email protected]", "ov€[email protected]" };
if (mail[0][2] == mail[1][2] && mail[0][3] == mail[1][3] && mail[0][3] == mail[1][3])
printf("%s\n%zu", *mail, strlen(*mail));
为字节相当于Unicode字符的这种方法扫描。 Unicode欧元符号€占用3个字节。因此需要比较三个字符数组字节,以确定Unicode字符是否匹配。通常您需要知道要比较的字符或字符串的大小以及它为解决方案工作产生的位数。这看起来根本不是处理Unicode的好方法。 有没有比较char类型的字符串和字符元素的更好方法?
另外,当使用wchar_t时,如何将文件内容扫描到数组?函数fread似乎没有产生有效的结果。
C++中的Unicode:不要使用'wchar_t',使用正确的Unicode库。 – 2012-03-18 10:35:00
'倾向于使用wchar_t进行Unicode字符编码。没有;他们将它用于Unicode字符_storage_,并且存在很大差异。 – 2012-03-18 10:46:25
[std :: wstring VS std :: string]可能的重复(http://stackoverflow.com/questions/402283/stdwstring-vs-stdstring) – 2012-03-18 10:46:51