window programming --Unicode

          一 Unicode 簡介
          ?1 Unicode 是ASCII 擴展,從傳統(tǒng)的7位,擴展位16 位,可以顯示世界上所有語言
          ASCII 碼
          ?????? 0-???? 1-???? 2-???? 3-???? 4-???? 5-???? 6-???? 7-
          -0???? NUL??? DLE??? SP???? 0????? @????? P????? `????? p
          -1???? SOH??? DC1??? !????? 1????? A????? Q????? a????? q
          -2???? STX??? DC2??? "????? 2????? B????? R????? b????? r
          -3???? ETX??? DC3??? #????? 3????? C????? S????? c????? s
          -4???? EOT??? DC4??? $????? 4????? D????? T????? d????? t
          -5???? ENQ??? NAK??? %????? 5????? E????? U????? e????? u
          -6???? ACK??? SYN??? &????? 6????? F????? V????? f????? v
          -7???? BEL??? ETB??? '????? 7????? G????? W????? g????? w
          -8???? BS???? CAN??? (????? 8????? H????? X????? h????? x
          -9???? HT???? EM???? )????? 9????? I????? Y????? I????? y
          -A???? LF???? SUB??? *????? :????? J????? Z????? j????? z
          -B???? VT???? ESC??? +????? ;????? K????? [????? k????? {
          -C???? FF???? FS???? ,????? <????? L????? \????? l????? |
          -D???? CR???? GS???? -????? =????? M????? ]????? m????? }
          -E???? SO???? RS???? .????? >????? N????? ^????? n????? ~
          -F???? SI???? US???? /????? ?????? O????? _????? o????? DEL

          ?2 雙位字符集
          DBCS:double-byte character set,最初的128個代碼是ASCII,較高的128個代碼中的某些總是跟隨著第

          二個位元組。這兩個位元組一起(稱作首位元組和跟隨位元組)定義一個字元。

          ?3 Unicode 解決方案
          ? Unicode是統(tǒng)一的16位元系統(tǒng),也DBCS 這樣的同時含有一位和兩位的字符集不同,Unicode 可以表示

          65536 個字符。
          ? Unicode 的缺點是,Unicode 使用的空間是ASCII 的兩倍
          二 寬字符和c
          ?1 char
          ? char c='A';
          ? 變量c 用一個字節(jié)來存儲,用16 進制表示位0x41
          ? char * p;
          ? 32 位系統(tǒng),一次指針變量需要用4個字節(jié)表示
          ? char * p="Hello!";
          ? 字符串占用7個字節(jié) 其中 6個用于保存字符串,1個用于保存中止符號0
          ? char [10]
          ? 占用10個字節(jié)
          ? char a[]="Hello!";
          ? 占用 7個字節(jié)
          ?2 寬字節(jié)
          ? typedef unsigned short whcar_t?? which is define in the window.h?
          ? 與unsign short 一樣 為16 字節(jié),兩個字節(jié)
          ? wchar_t c='A'?? 0x0041
          ? wchar_t *p=L"Hello!"? 指針占用 4個字節(jié) 而 字符串占用 14 個字節(jié)
          ?3 寬字元程序庫函數(shù)
          ? char * pc = "Hello!" ;
          ? iLength = strlen (pc) ;
          ? wchar_t * pw = L"Hello!" ;
          ? iLength = wcslen (pw) ;
          ?4 維護單一原始碼
          ?Microsoft Visual C++包含的TCHAR.H
          ?如果定義了名為_UNICODE的識別字,并且程式中包含了TCHAR.H表頭檔案,那么_tcslen就定義為wcslen
          ?#define _tcslen wcslen
          ?如果沒有定義UNICODE,則_tcslen定義為strlen:
          ?#define _tcslen strlen
          ?如果定義了 _UNICODE識別字,那么TCHAR就是wchar_t:
          ?typedef wchar_t TCHAR ;
          ?否則,TCHAR就是char:
          ?typedef char TCHAR ;

          ?如果沒有定義_UNICODE識別字
          ?#define __T(x) x
          ?#define _T(x) __T(x)
          ?#define _TEXT(x) __T(x)

          三 寬字節(jié)和windows
          ? 1 window 頭文件中的類型
          ? typedef char CHAR ;
          ? typedef wchar_t WCHAR ;
          ? typedef CHAR * PCHAR, * LPCH, * PCH, * NPSTR, * LPSTR, * PSTR ;
          ? typedef CONST CHAR * LPCCH, * PCCH, * LPCSTR, * PCSTR ;
          ? typedef WCHAR * PWCHAR, * LPWCH, * PWCH, * NWPSTR, * LPWSTR, * PWSTR ;
          ? typedef CONST WCHAR * LPCWCH, * PCWCH, * LPCWSTR, * PCWSTR ;

          ? #ifdef? UNICODE??????????????????
          ? typedef WCHAR TCHAR, * PTCHAR ;
          ? typedef LPWSTR LPTCH, PTCH, PTSTR, LPTSTR ;
          ? typedef LPCWSTR LPCTSTR ;
          ? #else
          ? typedef char TCHAR, * PTCHAR ;
          ? typedef LPSTR LPTCH, PTCH, PTSTR, LPTSTR ;
          ? typedef LPCSTR LPCTSTR ;
          ? #endif
          ? 2 Windows 函數(shù)調(diào)用
          ? #ifdef UNICODE
          ? #define MessageBox? MessageBoxW
          ? #else
          ? #define MessageBox? MessageBoxA
          ? #endif
          ? 3 Windows 的字符函數(shù)
          ? ILength = lstrlen (pString) ;
          ? pString = lstrcpy (pString1, pString2) ;
          ? pString = lstrcpyn (pString1, pString2, iCount) ;
          ? pString = lstrcat (pString1, pString2) ;
          ? iComp = lstrcmp (pString1, pString2) ;
          ? iComp = lstrcmpi (pString1, pString2) ;
          ? 4 在windows 使用printf
          ?? windows 并不支持printf 但是可以使用sprintf
          ?? int printf (const char * szFormat, ...) ;
          ?? printf ("The sum of %i and %i is %i", 5, 3, 5+3) ;
          ?? int sprintf (char * szBuffer, const char * szFormat, ...) ;
          ?? char szBuffer [100] ;
          ?? sprintf (szBuffer, "The sum of %i and %i is %i", 5, 3, 5+3) ;
          ?? puts (szBuffer) ;

          posted on 2006-09-14 15:12 康文 閱讀(221) 評論(0)  編輯  收藏 所屬分類: c\c++

          <2006年9月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 磴口县| 双柏县| 芦溪县| 隆化县| 拜城县| 霞浦县| 梧州市| 河池市| 兰州市| 海丰县| 孙吴县| 岐山县| 建水县| 资源县| 子长县| 湖北省| 琼结县| 北安市| 双柏县| 淮安市| 太仓市| 攀枝花市| 蒙山县| 镇沅| 新昌县| 南召县| 英德市| 渭南市| 巩留县| 若羌县| 合水县| 杭锦后旗| 上栗县| 天长市| 沭阳县| 博野县| 锡林浩特市| 仙居县| 梨树县| 天镇县| 司法|