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