码迷,mamicode.com
首页 > 其他好文 > 详细

推荐的字符和字符串处理方法

时间:2015-04-29 00:37:21      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

最好将应用程序转换为支持Unicode的形式。 遵循的基本准则如下:

1.开始将文本字符串想象为字符的数组,而不是char或字节的数组

2.用通用数据类型(如TCHAR/PTSTR)来表示文本字符和字符串

3.用明确的数据类型(如BYTE和PBYTE)来表示字节,字节指针和数据缓冲区

4.用TEXT或_T宏来表示字面量字符和字符串,但为了保持一致性和更好的可读性,请避免两者混用

5.执行全局替换(例如,用PTSTR替换PSTR)

6.修改于字符串有关的计算。例如,函数经常希望我们传给它缓冲区大小的字符数,而不是字节数,这意味着我们应该传入_countof(szBuffer),而不是sizeof(szBuffer)。而且,如果需要为一个字符串分配一个内存,而且知道字符串中字符数,那么要记住内存是以字节来分配的。这意味着我们必须调用malloc(nCharacters*sizeof(TCHAR)),而不是调用malloc(nCharacgers)。在前面列出的所有基本准则中,这是最难记住的一条,最好定义一个宏来避免犯错:

  1. #define chmalloc(nCharacters) (TCHAR*)malloc(nCharacters*sizeof(TCHAR)) 

 7.避免使用printf系列函数尤其是不要用%s和%S字段类型来进行ANSI于Unicode字符串之间的相互转换。正确的做法是使用MultiByteToWideChar和WideCharToMultiByte函数

8.UNICODE和_UNICODE符合要么同时指定,要么都不指定

 

对于字符串处理函数,应遵循以下基本准则。

1.始终使用安全的字符串处理函数,比如后缀为_s的函数,或者前缀为StringCch的函数,后者主要在我们明确控制截断的时候使用;如果不想明确控制截断,则首选前者。

2.不要使用不安全的C运行库字符串函数。

3.利用/GS和/RTCs编译器标志来自动检测缓冲区溢出。

4.不要用kernel32方法来进行字符串处理,比如lstrcat 和 lstrcpy。

5.比较两种字符串,应使用CompareStringOrdinal来进行比较,因为他非常快,不会考虑用户的区域设置。
 

推荐的字符和字符串处理方法

标签:

原文地址:http://www.cnblogs.com/profession/p/4464472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!