开始将文本字符串想象成字符的数组,而不是char或字节数组。
用通用的数据类型如TCHAR , PTSTR来表示文本字符与字符串。
用明确的数据类型如BYTE与PBYTE来表示字节,字节指针与数据缓冲区。
用TEXT或者_T宏来表示字面量字符与字符串。但两者最好不要混用。
执行全局替换,例如用PTSTR替换PSTR。
修改与字符串有关的计算,例如。函数经常希望我们传递给它缓冲区大小的字符数,而不是字节数,这意味着我们应该传入_countof(szBuffer),而不是sizeof(szBuffer)。而且如果需要为一个字符串分配一个内存块,而且知道字符串中的字符数,那么要记住内存是以字节来分配的,这意味着我们必须调用malloc(nCharacter*sizeof(TCHAR)), 而不是调用malloc(nCharacters).
避免使用printf系列函数,尤其是不要利用%s,%S字段类型来进行ANSI与Unicode字符串之间的相互转换,正确的做法是使用MultiByteToWideChar与WideCharToMultiByte函数。
UNICODE与_UNICODE符号要么同时制定,要么都不指定。
对于字符串处理函数:
始终使用安全的字符串处理函数,比如后缀_s的函数,或者使用前缀为StringCch 的函数,后者主要在我们想明确控制阶段的时候使用。
不要使用不安全运行库字符串处理函数,一般情况下如果一个缓冲区处理函数的参数中不包括目标缓冲区的长度。那么我们应该避免使用这样的函数,同时还应避免自己实现这样的函数。c运行库为缓冲区处理提供了一系列替代函数,比如memcpy_s,memmove_s,vmemcpy_s,只要定义了_stdc_want_secure_lib_符号,所有这写方法都是可用的。CrtDefs.h默认定义了此符号。所以,不要取笑对_stdc_want_secure_lib_的定义。
利用/GS与/RTCs编译器标志自动检测缓冲区的益出。
不要用Kernel32方法来进行字符串处理,例如lstrcat,lstrcpy.
在应用程序的代码中,需要比较两种字符串,其中,程序字符串包括文件名,xml元素/属性以及注册表项/值等,对于这些字符串,应适用CompareStringOrdinal来进行比较,因为它非常快,而且不会考虑用户的区域设置,因为不管程序在世界上的任何地方运行,这种字符串都是不变得。用户字符串一般要在用户界面显示,对于这些字符串应使用CompareString(Ex)来比较。
发表评论
-
近期.net学习及项目开发整理-正则表达式
2012-07-06 09:45 657正则表达式 :验证有1-3位小数的正实数 ^[0-9]+( ... -
正则表达式从入门到精通(转)
2012-07-06 09:37 573一,概述 1,正则表达式,可以说是任何一种编程语言都提 ... -
Flash:Flex背景图像实现类似于html平铺拉伸(转)+1
2012-07-06 09:30 560在Flex中如果要实现 ... -
动态添加删除表格2
2012-07-05 20:45 645//控制新增图片 var i=2; var ... -
预览ExtJS 4.0的新功能/新特性:渲染组件的方式
2012-07-03 13:43 746转载请注明Ext中文 ... -
转载的一些Flex验证
2012-07-02 10:35 527关键字: flex flex3 numberformatt ... -
Flex利用自定义事件使用弹出窗口为DataGrid添加新数据
2012-07-02 10:34 510下面是TitleWindow所有代码: Xml代码 ... -
Flash:Flex背景图像实现类似于html平铺拉伸(转)+1
2012-07-02 10:34 574在Flex中如果要实现 ... -
Flex动态设置Button中的icon指向外网图片源
2012-07-02 10:34 575package { import flash.displa ... -
flex MP3播放器开发三(进度条显示)
2012-07-01 00:11 701由于flex音乐组件Sound比较强大,基本上能满足播放, ... -
flex学习-----自定义Sprite
2012-07-01 00:11 550package com.cvicse.workflow.u ... -
FLEX3构建网络监控程序
2012-07-01 00:11 554ESRIA网络监视器是一个演示应用程序,在多个视图中显示网 ... -
flex的mask处理
2012-07-01 00:11 758在做公司一个flash播放器时候,需要在一个swf中动态加 ... -
像Youtube一样的flv视频网站制作 使用Flex和PHP创建自己的视频应用
2012-07-01 00:11 692转帖:http://blog.sina ...
相关推荐
DB2字符串处理 字符串处理 db2 函数
字符串比较处理宏字符串比较处理宏字符串比较处理宏字符串比较处理宏
几个字符串处理函数增强版 常用需求基本都能完成 已经编译成DLL 函数列表 兼容字符和串 void revstr char str 字符串反转 int substring char res int pos int len char substr 从pos开始取len个字符到substr中 ...
处理字符串 包括字符串分割 字符串的一些运算
数据库字符串处理数据库字符串处理数据库字符串处理数据库字符串处理
StrComp StrComp(string1,string2[,compare]) 返回string1字符串与string2字符串的比较结果,如果两个字符串相同,则返回0,如果小于则返回-1,如果大于则返回1 InStr InStr(string1,string2[,compare]) 返回...
汇编字符串处理
多重字符处理机制,仿照python字符串处理写的一个针对c++的字符串处理
java字符串处理取出括号内的字符串 都是我自己试过可以用的j
截取字符串。将Gb2312编码的字符串转换为utf-8。判断是否有非法字符。分割字符串。检测含中文字符串实际长度。截断字符串,如果str 的长度超过 need,则提取 str 的前 need 个字符,并在尾部加 “...”。将字符串中...
STL与字符串处理
java 常用字符串处理工具类! java 常用字符串处理工具类!
SQL 字符串处理函数 获取指定的字符
编写一个applet程序,在窗口界面中实现当输入一个字符串和一个字符后,原字符串中所有该字符将被删除并显示出结果
常用字符串处理函数 求子字符串,字符串分割,编码转换.
被爱可以字符串处理工具由中国被爱可以在线站长Bicyle开发,是一款字符串处理的绿色工具软件,它具有繁简体转换 、URL和HTML编码转换、字母大小写转换、邮件地址分组、半全角转换、区位码和ASCII码查询,WAP文档UTF-...
常用字符串处理函数都列在文档里面了,但是需要使用我word 2007才能打开。
mysql常用字符串函数、字符串处理函数大全。word文档内容中涵盖了mysql数据库字符串处理的38个函数。可完全满足日常对mysql数据库的字符处理操作。
C#字符串处理 C#字符串处理,轻松学习C#,轻松入门~~
字符串归并处理,字符串归并处理字符串归并处理