寫博客,只是記錄下一些自己工作中的心得。最近在做http協(xié)議解析,其實(shí)就是操作字符串,由于是在Mobile下開發(fā),所以都是Unicode。
發(fā)現(xiàn)strstr()、wcsstr()在應(yīng)用中有差別。下面是我的調(diào)試代碼
TCHAR* ch = L"123*56";
TCHAR* LL = L"56";
TCHAR* TT = _tcsstr(ch,LL);
int a = TT - ch;
int b= TT - L"123*56";
其中b為負(fù)值,a就是正值,在strstr中則沒有這樣的事都是正值。通過跟蹤發(fā)現(xiàn)TT的地址大于L"123*56",可a和b就是一個正一個負(fù),我用的VC8,感興趣的朋友可以試一試。也就是說在Unicode下,在試圖對字符串加減時,我們實(shí)際訪問的不是它的首地址,它會自動轉(zhuǎn)到字符串末端的地址。
C++中的字符分三類:單字符、多字符、寬字符。分別是char、TCHAR、WCHAR。TCHAR具有通用性,根據(jù)環(huán)境不同,所指向的類別不同。并且下面的寫法是合法的。
char CH[] = "1234";
WCHAR t[5] = {0};
t[0] = CH[0];
它們只是字符所占的空間不同而已,值可以一樣的。