unicode資料型別(與ansi關係和相互轉化)
1,windows定義unicode資料型別
wchar(unicode字元)
pwstr(指向unicode字串的指標)
pcwstr(指向乙個恆定的unicode字串的指標)
以上都是unicode字元和字串。同時windows定義了ansi/unicode通用資料型別ptstr和pctstr。
unicode巨集沒有前置下劃線,_unicode巨集用於c執行期標頭檔案,而unicode用於windows標頭檔案。
2,c對unicode的支援
比如常見函式:char *strchr(const char*,int) --------->wchar_t *wcschr(const wchar_t *,wchar_t);
int strcmp(const char*,const char*)-------->int wcscmp(const wchar_t*,const wchar_t*);
例如strcpy--->wcscpy,strlen->wcslen;實際是把wcs取代ansi字首str。
3,tchar.h
tchar.h檔案唯一作用幫助建立ansi和unicode通用源**。
如果定義_unicode,tchar宣告為:
typedef wchar_t tchar
如果沒有定義_unicode:
typedef char tchar;
分配字串 tchar szstring[100];或者tchar *sze="hello world";
如果生成unicode不是ansi串,必須改寫為:tchar *sze=l"hello world";(l意思是unicode字串編譯);
同時也可以改寫為tchar *sze=_text("hello world");
4,windows程式設計中建議使用系統函式,而不是c執行字串函式
使用時候加上shlapi.h標頭檔案。函式樣子為strcat、strchr等等(開頭字母大寫)
5,windows字串函式
windows提供的unicode函式;例如:
lstrcat,lstcmp,lstcmpi、lstcpy、lstrlen。這些函式可以呼叫unicode也可以呼叫ansi版本。
如果沒有定義了unicode,lstcat將擴充套件為lstcata,如果定義了unicode,擴充套件為strcatw。
6,unicode 和ansi相互轉化
char sza[100]; // an ansi string buffer
wchar szw[100];//a unicode string buffer
sprintf(sza,"%s","ansi str"); //normal sprintf: all string are ansi
sprintf(sza,"%s",l"unicode str"); //converts unicode string to ansi
swprintf(szw,l"%s",l"unicode str");// normal swprintf: all string are unicode
swprintf(szw,l"%s","ansi str"); // converts ansi string to unicode
(嚴格注意大小寫s)
lptstr 等價於 char *
lpcstr 等價於 const char *
7,unicode和ansi之間轉化字元(函式參考msdn)
multibytetowidechar (多位元組字串轉化為寬位元組字串)
widechartomultibye(寬字串轉為多位元組字串)
例項:char buf[max_path];
size_t alen = strlen( buf ) + 1;
int wlen = multibytetowidechar(cp_acp,0,buf,alen,null,0);
lpwstr lpw = new wchar [wlen];
multibytetowidechar(cp_acp,0,buf,alen,lpw,wlen);
。。。。。。。。。。。。//使用lpw
delete lpw;
ANS 1編碼詳解(一) 基礎語法和資料型別
ans.1是一種跨平台的編碼格式,網上關於ans.1協議的實現一抓一大把,openssl裡面有ans.1的實現,大家感興趣的可以去看看。我們這裡主要是講講ans.1編碼,這樣大家看 的時候更容易理解一些,它的組成有點類似xml和tlv有多層的巢狀。asn.1語法遵循傳統的巴科斯正規化bnf風格 最基...
SQL SERVER資料型別與C 資料型別對照表
sql server型別 c 型別 精確數字 bigint 從 2 63 9223372036854775808 到 2 63 1 9223372036854775807 的整型資料 所有數字 儲存大小為 8 個位元組。int64 int從 2 31 2,147,483,648 到 2 31 1 2...
SQL SERVER資料型別與C 資料型別對照表
sql server 型別 c 型別 精確數字 bigint 從 2 63 9223372036854775808 到2 63 1 9223372036854775807 的整型資料 所有數字 儲存大小為 8 個位元組。int64 int 從 2 31 2,147,483,648 到2 31 1 2...