程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 字符和字符串處理-ANSI字符和Unicode字符,-ansiunicode

字符和字符串處理-ANSI字符和Unicode字符,-ansiunicode

編輯:C++入門知識

字符和字符串處理-ANSI字符和Unicode字符,-ansiunicode


我們知道,C語言用char數據類型表示一個8位的ANSI字符,默認在代碼中聲明一個字符串時,C編譯器會把字符串中的字符轉換成由8位char數據類型構成的一個數組:

// An 8-bit character
char c = 'A';

// An array of 99 8-bit character and 8-bit terminating zero
char szBuffer[100] = "A String";

Microsoft的C/C++編譯器定義了一個內建的數據類型wchar_t,它表示一個16位的Unicode(UTF-16)字符。編譯器只有指定了/Zc:wchar_t編譯器開關時,才會定義這個參數類型。

聲明Unicode字符和字符串的方法如下:

// A 16-bit character
wchar_t c= L'A';

// An array up to 99 16-bit characters and a 16-bit terminating zero
wchar_t szBuffer[100] = L"A String";

字符串之前的大寫字母L通知編譯器該字符串應該編譯一個Unicode字符串。

另外,在編寫代碼的時候,可以使用ANSI或Unicode字符/字符串使其能通過編譯。WinNT.h定義了以下類型和宏:

#ifdef UNICODE

typedef WCHAR TCHAR, *PTCHAR, PTSTR;
typedef CONST WCHAR *PCTSTR;

#define __TEXT(quote) L##quote

#else

typedef CHAR TCHAR, *PTCHAR, PTSTR;
typedef CONST CHAR *PCTSTR;

#define __TEXT(quote) quote

#endif

#define TEXT(quote) __TEXT(quote)

利用這些類型和宏來寫代碼,無論使用ANSI還是Unicode字符,都能通過編譯,如下所示:

// If UNICODE define, a 16-bit character; else an 8-bit character
TCHAR c = TEXT('A');

// If UNICODE define, an array of 16-bit character; else 8-bit character
TCHAR szBuffer[100] = TEXT("A String");

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved