C语言中字符和字符串处理(ANSI字符和Unicode字符)
我们知道,C语言用char数据类型表示一个8位的ANSI字符,默认在代码中声明一个字符串时,C编译器会把字符串中的字符转换成由8位char数据类型构成的一个数组:
//An8-bitcharacter charc='A'; //Anarrayof998-bitcharacterand8-bitterminatingzero charszBuffer[100]="AString";
Microsoft的C/C++编译器定义了一个内建的数据类型wchar_t,它表示一个16位的Unicode(UTF-16)字符。编译器只有指定了/Zc:wchar_t编译器开关时,才会定义这个参数类型。
声明Unicode字符和字符串的方法如下:
//A16-bitcharacter wchar_tc=L'A'; //Anarrayupto9916-bitcharactersanda16-bitterminatingzero wchar_tszBuffer[100]=L"AString";
字符串之前的大写字母L通知编译器该字符串应该编译一个Unicode字符串。
另外,在编写代码的时候,可以使用ANSI或Unicode字符/字符串使其能通过编译。WinNT.h定义了以下类型和宏:
#ifdefUNICODE typedefWCHARTCHAR,*PTCHAR,PTSTR; typedefCONSTWCHAR*PCTSTR; #define__TEXT(quote)L##quote #else typedefCHARTCHAR,*PTCHAR,PTSTR; typedefCONSTCHAR*PCTSTR; #define__TEXT(quote)quote #endif #defineTEXT(quote)__TEXT(quote)
利用这些类型和宏来写代码,无论使用ANSI还是Unicode字符,都能通过编译,如下所示:
//IfUNICODEdefine,a16-bitcharacter;elsean8-bitcharacter TCHARc=TEXT('A'); //IfUNICODEdefine,anarrayof16-bitcharacter;else8-bitcharacter TCHARszBuffer[100]=TEXT("AString");
以上所述就是本文的全部Neri了,希望大家能够喜欢。