Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532928
  • 博文数量: 95
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 1202
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-20 01:23
文章分类

全部博文(95)

文章存档

2010年(28)

2009年(67)

我的朋友

分类: C/C++

2009-11-06 09:14:59


C++中的字符分三类:单字符、多字符、宽字符。分别是char、TCHAR、WCHAR。TCHAR具有通用性,根据环境不同,所指向的类别不同。并且下面的写法是合法的。
char CH[] = "1234";
WCHAR t[5] = {0};
t[0] = CH[0];
它们只是字符所占的空间不同而已,值可以一样的。


最近在做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下,在试图对字符串加减时,我们实际访问的不是它的首地址,它会自动转到字符串末端的地址。
阅读(2173) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~