写博客,只是记录下一些自己工作中的心得。最近在做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];
它们只是字符所占的空间不同而已,值可以一样的。