1. CString和char *转换 CString重载了类型LPCTSTR所以在用到const char *的地方可以直接使用CString如下: CString str=”中国人民” Char *pChar=new Char[100]; Strcpy(pChar,str)//在这里str自动调用operator LPCTSTR()返回m_pData指针,完成操作。 Strcpy(pChar,str.Getbuffer(0))//这种方法也可以 2. char *和CString的转换 char pChar[]=”中国人” CString str; Str.Format(“%s”, pChar) 3.char *和unsigned short之间的转换 char pChar[]=”a中国人” DWORD dwNum=MultiByteToWideChar(CP_ACP,0,(char *) pChar,-1,NULL,0); //可以得到ANSI字符到unicode字符所需要的空间,得到的空间比实际字符串占用的空 间加1,用来装’\0’。 WCHAR *wp=new WCHAR[dwNum]; MultiByteToWideChar(CP_ACP,0,(char *)cp,-1,wp,dwNum); Int wcCount=Wcslen(wp)//结果是4,它不包括那个’\0’。 4.unsigned short 和char *之间的转换 WCHAR pW[]=L"1中国人民a"; int b=wcslen(pW)+1;//给字符串最后的0一个字节的空间. int bb=WideCharToMultiByte(CP_ACP, 0, pW,-1, NULL, 0, NULL, NULL); //计算宽字符转换为char所需要的空间,如果第四个参数指定为-1则自动计算字符串长度,到NULL为止,并且包括NULL。否则以第四个参数指定的个数为准。 Char *pC=new char[bb]; Bb= WideCharToMultiByte(CP_ACP, 0, pW,-1, pC, bb, NULL, NULL); //应该检查bb如果bb为0则说明函数返回错误。转换完成后新串尾部包括’\0’。 5.CString 和 unsigned short 转换 CString str="a中国人1"; LPCTSTR pChar=str; DWORD dwNum=MultiByteToWideChar(CP_ACP,0,(char *) pChar,-1,NULL,0); WCHAR *wp=new WCHAR[dwNum]; MultiByteToWideChar(CP_ACP,0,(char *)pChar,-1,wp,dwNum); delete[] wp; 6.unsigned short和CString转换 转换中切不可用str.Format(“%S”,wp).这个除了转换英文和数字对中文不起作用. CString str; WCHAR pW[]=L"1中国人a"; LPTSTR p= str.GetBuffer(256); int bb=WideCharToMultiByte(CP_ACP, 0, pW,-1,p, 256, NULL, NULL); str.ReleaseBuffer(); *解释一下:GetBuffer(nMax)和ReleaseBuffer(newLen) 当你想直接使用字符串的缓冲区时,也许你不清楚缓冲区的大小是否可以进行正常使用,这时你可以使用GetBuffer(nMax),用nMax分配一个新的大小。当为0时,不进行分配,只是返回指针。 操作完成后,为了使各个其它成员函数起作用,请用RealseBuffer(nNewLen)来重新指定长度,并且在nNewLen位置上用NULL结尾。如果不用nNewLen,则默认为-1系统自动测量字符串长度,如果不是NULL结尾的,则用刚才GetBuffer分配的长度。 7._bstr_t和BSTR的关系 #if defined(WIN32) && !defined(OLE2ANSI) typedef WCHAR OLECHAR; #else typedef char OLECHAR; #endif typedef OLECHAR* BSTR; 实际上BSTR就是直接指向字符串的首地址(双字节或者ANSI字符串)。 而BSTR之前的四个字节是该字符串的长度,由编译器生成的代码自动去读这个长度,而不是用"\0"来标识字符串的结束。 BSTR 不能用new来分配内存的原因就是前四个字节是字符串长度。没办法用new来分配。 BSTR pb=SysAllocaString(L”中国人民”); 而_bstr_t就是对BSTR的封装 8._char *和BSTR的转换 char pc[]="中国人a"; BSTR pBstr=_com_util::ConvertStringToBSTR(pc); ::SysFreeString(pBstr); //必须使用否则出现内存泄露 pBstr=NULL; 注:使用时必须引用头文件#include如果出现链接错误请添加comsupp.lib或者consuppwd.lib. BSTR bstrText = _bstr_t("This is a test");//不可以用这种方法,这只是临时变量。 9._ BSTR和char *的转换 char *pC=NULL; BSTR pBstr=::SysAllocaString(L”中国人a”); pC=_com_util::ConvertBSTRToString(pBstr); SysFreeString(pBstr); PBstr=NULL; Delete[] pC; PC=NULL;//据说此种方法有内存泄露。说是用sysFreeString也不行 ////////////////////////////////////////////////// /////////////////////////////////////////////////// //// _bstr_t bstr=pBstr; char *pP=bstr; char *pC=new char[strlen(pP)]; strcpy(pC,pP); delete[] pC.据说此法是推荐方法。 ////////////////////////////////////////////////// /////////////////////////////////////////////////// //////////// 10.BSTR到_bstr_t的转换 BSTR pBstr=::SysAllocString(L"中国人a"); _bstr_t b_str(pBstr); ::SysFreeString(pBstr); 11.wchar*到_bstr_t的转换 WCHAR pC[]=L"支你"; _bstr_t b_str(pC); 12.char*到_bstr_t的转换 char pC[]="支你"; _bstr_t b_str(pC); 13._bstr_t到char*的转换 _bstr_t bstr("人民万岁12"); char *pC=bstr; int a=strlen(pC); char *pP=new char[a]; strcpy(pP,pC); delete[] pP; 13. _bstr_t到char*的转换 _bstr_t bstr("人民万岁12"); char *pC=bstr; int a=strlen(pC); char *pP=new char[a]; strcpy(pP,pC); delete[] pP; 14. _bstr_t到CString的转换 CString str; _bstr_t bstr; str=(char *)bstr; 15. CString到_bstr_t的转换 CString str="中国人a"; _bstr_t bstr; bstr=(LPCTSTR)str; 16. CString到BSTR的转换 CString str="中国人a"; BSTR bstr=str.AllocSysString(); ::SysFreeString(bstr); 17. BSTR到CString的转换 CString str; BSTR bstr=::SysAllocString(L”中国人a”); str=bstr; ::SysFreeString(bstr); 18. CComBSTR到BSTR的转换 CComBSTR combstr(10); combstr=L"中国人a"; BSTR bstr=combstr.Copy(); ::SysFreeString(bstr); bstr=NULL; 19. BSTR到CComBSTR的转换 BSTR bstr=::SysAllocString(L"中国人a"); CComBSTR combstr;//combstr(bstr);// combstr=bstr; ::SysFreeString(bstr); bstr=NULL;
发表评论
-
正则表达式
2012-07-06 09:44 502记得在做数据抓去的时候正则表达式写的很溜,几年不用现在都不 ... -
常用正则表达式
2012-07-06 09:37 643匹配中文字符的正则表达式: [u4e00-u9fa5] ... -
ASP.NET中Theme使用方法详解
2012-07-06 09:29 873ASP.NET开发技巧之Theme功能主要是有什么呢?那么 ... -
js动态生成表格
2012-07-05 20:44 674- 0; t *= 10, e--); for (; ... -
桌面组件开发学习笔记
2012-07-03 13:42 6051. 桌面组 ... -
桌面组件开发学习笔记
2012-07-03 12:17 6241. 桌面组 ... -
OpenScales入门教程:第二节 : 创建第一张地图
2012-07-02 10:13 1087你需要把第一 ... -
Alert提示框备用
2012-07-02 10:13 600Alert { /**通 ... -
遮罩的使用
2012-07-02 10:13 594有N个按钮又不想其导航栏出现烦人的滚动条。 解决方法 ... -
fxmq
2012-07-02 10:13 698Flex Message Queue (fxmq) (ba ... -
Flex remoteobject工作原理探讨
2012-07-01 09:34 653Flex访问远程服务都是通过AbstractService ... -
Cross-domain policy和/WEB-INF/flex/proxy-config.xml
2012-07-01 09:34 652从flash 7开始,不同域名的资源访问受到限制,比如a. ... -
Flex Socket编程
2012-07-01 09:34 714比较懒,比较少上csdn的,如果发现留言给我没有回复,望见 ... -
Flex与.net交互
2012-07-01 09:33 392方法一: 把Flex生成的SWF文件(在目录../h ... -
比较好的firefox中字符换行解决方法
2012-06-30 17:51 477在网页中经常碰到字符断行的问题,一般情况下只要设置了外层容 ... -
LINUX终端乱码解决方法
2012-06-30 17:51 605安装Linux时选择使用中文,当使用SSH、TELNET ... -
模幂运算的几种解决方法
2012-06-30 17:51 984【问题】 计算a**b%c的值。 其中,&qu ... -
Ubuntu 9.10升级后 启动黑屏的解决方法
2012-06-30 17:51 1015安装完 9.10后,我 ...
相关推荐
各种 C++ 字符串类型转换(char *、wchar_t*、_bstr_t、CComBSTR、CString、basic_string 和 System.String) 本主题演示如何将各种 C++ 字符串类型转换为其他字符串。可以转换的字符串类型包括 char *、wchar_t*、_...
Java各种字符串之间的转换,各种类型转换。
javascript将字符串类型转换成日期进行比较
(const) char 转CString 详解(字符串类型转换详解,不断补充)
详细描述了再C++语言开发过程中遇到的字符串之间的相互转换问题。尤其在数据包封包是对Buffer缓冲区压入数据时往往不可避免。
C++中的字符串类型及相互转化 C++中的字符串类型及相互转化 C++中的字符串类型及相互转化
如何在各种字符串类型之间进行转换
字符串数组转换成string类型的
本文实例讲述了C#实现实体类与字符串互相转换的方法。分享给大家供大家参考。具体实现方法如下: using System; using System.Collections.Generic; using System.Text; namespace PackDLL.Data.ConvertData { ///...
JAVA日期与字符串的转换 1) 将一个Date类型的变量转换为字符串 2) 将一个字符串转换Date类型的变量
Delphi 将整数类型转换为字符串类型,字符串类型转换,不过感觉运行结果有些疑问啊,好像程序有误,也或许是我Delphi版本的问题,最后的运行结果总是出现“100”,咋搞的?源码倒是可以顺利在D7下编译。
图形处理过程中保存Color类型到数据库,如果选择字符串的方式保存,Color.tostring,在需要读取的时候可以通过自己写的小函数来进行转换。 Function GetColor(Color字符串) as Color 字符串转换为Color类型
java中各种日期类型与字符串类型相互转换
js中date类型时间与字符串类型函数转换工具包,可以作为前端util包
字符串类型互相转换,支持ANSI,unicode,UniBigEnd,UTF-8,UTF-7等多种类型
C#语言常用的字符串处理函数,如字符串比较,字符串查找,字符串插入,字符串删除,字符串替换,字符串截取,字符串连接,字符串与数组间转换等操作
java字符串类型数字设置千分位分隔,可对整数、带小数点的数字、负数进行千分位分隔。并对字符串进行了数字判断,非数字类型的字符串不进行转换。
在VB中实现将字符串转换成变量名,提供了两种。主要使用Contrl和callbyname ……
您可能感兴趣的文章:sql语句中如何将datetime格式的日期转换为yy-mm-dd格式将WMI中的DateTime类型转换成VBS时间的函数代码LINQ字符串向datetime 转换时失败的处理方法Sql中将datetime转换成字符串的