cstring 转换 char* (VS2008下测试成功)

问题描述

//将CString转成char,之前发过一贴只能转单字节字母组成的字符串,以下可转中文,未验证其它语言char*CStringToCharArray(CStringstr){char*ptr;#ifdef_UNICODELONGlen;len=WideCharToMultiByte(CP_ACP,0,str,-1,NULL,0,NULL,NULL);ptr=newchar[len+1];memset(ptr,0,len+1);WideCharToMultiByte(CP_ACP,0,str,-1,ptr,len+1,NULL,NULL);#elseptr=newchar[str.GetAllocLength()+1];sprintf(ptr,_T("%s"),str);#endifreturnptr;}

解决方案

解决方案二:
之前在网上找了很多高手的方法还是不行,相信有很多像我一样的菜鸟难找到正确的方法,以上方法希望能帮助同胞们。。。。。
解决方案三:
有简单的方法呀,用sprintf_s和强制转换都行。chartest[32];CStringstr="测试";sprintf_s(test,"%s",str);强制转换用(LPTSTR)(LPCTSTR)str;
解决方案四:
很简单的东西如下:#include<atlbase.h>//包含W2A定义的头文件CStringtest;char*pTest;#ifdefUNICODE//unicode下为short或wchar_t==>>char{USES_CONVERSION;pTest=W2A(test.GetBuffer());//注意这种方式在.net版本能支持,6.0版本这样pTest=W2A(test.GetLength());}#else//ansi下就是chartocharpTest=test.GetBuffer();//注意这种方式在.net版本能支持,6.0版本这样pTest=test.GetBuffer(test.GetLength());#endif
解决方案五:
不错
解决方案六:
菜鸟的想法:CStringstr;char*ch;ch=str.GetBuffer(100);
解决方案七:
楼上的方法在unicode下是不可以的
解决方案八:
unicode跟GB2312是要区分开
解决方案九:
很好用~哈哈,谢谢
解决方案十:
友情帮顶下!顺便学习学习!
解决方案十一:
//供参考交流char*CStringToCharArray(CStringstr){return(LPSTR)((_bstr_t)(str));}
解决方案十二:
学到东西啦
解决方案十三:
这得看你的CString变量是ANSI的还是UNICODE的。具体看工程属性“C/C++-->预处理-->预处理器定义”中是否声明了UNICODE。如果是Unicode字符串,那么可以使用WideCharToMultiByte函数将其转换,否则可以用CString的GetBuffer函数获取char*指针(别忘了用完后,用ReleaseBuffer函数释放缓冲区)。其实CString变量可以直接作为LPCTSTR指针使用的。在ANSI版本是LPCTSTR就是一个constchar*,在UNICODE版本中则为constTCHAR*指针。可以用(LPTSTR)(LPCTSTR)将一个CString变量强制转换为char*或者TCHAR*.
解决方案十四:
CStringstr=“test”;char*pchar=(char*)(LPCSTR)str;
解决方案十五:
顶楼上~
解决方案:
顶起来
解决方案:
upupup
解决方案:
谢谢,好东西!
解决方案:
学习!!!!!!!!!!!
解决方案:
这里API和源码例子一个英文的,一个翻译的:
解决方案:
unicode跟GB2312这两个标准怎么区分,怎么用啊我们一般是在哪个环境下类
解决方案:
不错,收藏
解决方案:
引用17楼zyy2008719zyy的回复:

谢谢,好东西!

up
解决方案:
VC++里提供了一起转换函数
解决方案:
CStringstr;str.GetBuffer();
解决方案:
楼主,多谢了啊,我找了很长时间了啊2楼的那个强制转换不行的,在vc6下可以但是在vs2008,unicode下是不行的。
解决方案:
引用7楼yuhaozx的回复:

unicode跟GB2312是要区分开

这里面有牵涉到GB2312吗?虽然中文是用GB2312的,但是C++默认是ANSI标准,应该是ANSI和Unicode间的问题吧?
解决方案:
引用7楼yuhaozx的回复:

unicode跟GB2312是要区分开

我知道了,我刚在网上查了一下,原来使用2个字节来代表一个字符的各种汉字延伸编码方式,称为ANSI编码,在简体中文系统下,ANSI编码就代表GB2312编码。
解决方案:
用GetBuffer或GetBufferSetLength两个函数可以转化。
解决方案:
谢谢楼主,找了好久了,其它方法在VS2008下用不了的。
解决方案:
用一个数组反过来用用getbuffer
解决方案:
学习学习,目前还没有用到这个~收藏备用~
解决方案:
太感谢了。。。
解决方案:
不错,收藏
解决方案:
很有收获的一个帖子…
解决方案:
直接用宏转化不就OK了么CStringa;char*b;USES_CONVERSION;b=T2A(a);
解决方案:
该回复于2011-11-28 09:22:21被版主删除
解决方案:
直接这样就行char=CString.GetBuffer(CString.GetLength());楼主太麻烦了
解决方案:
顶顶顶,学到东西了。
解决方案:
嗯,的确学到东西了
解决方案:
用一个类之前在MSDN里把这个类看一遍才是对自已负责的态度。
解决方案:
看我转换并调用一个计算器:CStringSTemp(_T("calc.exe"));USES_CONVERSION;char*Str=T2A(STemp.GetBuffer());//系统宏T2A(W2A)WinExec(Str,SW_SHOW);
解决方案:
看我的例子并调用一个计算器CStringSTemp(_T("calc.exe"));USES_CONVERSION;char*Str=T2A(STemp.GetBuffer());//系统宏T2A(W2A)WinExec(Str,SW_SHOW);
解决方案:
很好用!
解决方案:
对于unicode的字符转换很蛋疼,有时网上找的一些第三方代码,里面的字符处理不是unicode的,而且出现的地方有多,很蛋疼,要是MS能把编译器设计成自动识别多好啊,就不用改那么多了

时间: 2024-08-01 20:48:06

cstring 转换 char* (VS2008下测试成功)的相关文章

c++-MFC 中 CString转换成char[]数组

问题描述 MFC 中 CString转换成char[]数组 环境为vs2010 CString szText; char a[1024]; edit1.GetWindowText(szText);//获取edit1编辑框的文本 怎么将CString类 szText 转换为char[]数组的内容? memcpy(a,szText,1024);只能读取文本的第一个字符 解决方案 MFC不建议用char类型了,你用TCHAR,宽字符的处理速度还快些 解决方案二: memcpy(a,(const cha

[收藏整理]linux下测试磁盘性能

参考:http://blog.sina.com.cn/s/blog_63ac8a6c0100g21d.html 1.DD 底层测试:从linux安装盘启动,鼠标和键盘启动后按Ctrl+Alt+F1,进入Sh模式 dd读测试 time dd if=/dev/sd* of=/dev/null bs=64k count=64k dd写测试 time dd if=/dev/zero of=/dev/sd* bs=64K count=64k 注:1)参数为bs=64K count=64k时,测试文件大小为

struct-const CString 转换为char* 内容丢失

问题描述 const CString 转换为char* 内容丢失 LPCTSTR lpszText = (LPCTSTR)sHostName; struct hostent FAR *lpHostEnt = gethostbyname(LPSTR(lpszText)); if (lpHostEnt == NULL) { sIPAddress = _T(""); return WSAGetLastError(); } 解决方案 参考:http://blog.sina.com.cn/s/b

本地测试成功的ASP.NET网站如何发布到网上

问题描述 本地测试成功的ASP.NET网站如何发布到网上比如说要什么空间?域?等等...具体的步骤如何操作?哎.做好一个小网站想测试一下也不知道怎么弄.大家来谈谈经验吧. 解决方案 解决方案二:一直在线等啊......解决方案三:空间支持ASP.NET看你用什么版本的.1.12.03.5域名//发布编译以后上传到你的空间!!!OK解决方案四:或者直接把全部的东西放到空间上去!解决方案五:我通常是这样的1.在自己机子xp上安装iis,然后建设虚拟目录2.点击vs2005生成-网站发布到虚拟目录3.

html5-字符串转换JSON对象 然后成功通过key获取value值

问题描述 字符串转换JSON对象 然后成功通过key获取value值 var obj="{'a':1,'b':2}" 我想把这个样的字符串 在HTML5里边解析成json 该什么做呢 求各位指点下小生先行多谢各位 我这样写的 console.log(obj); var c=JSON.parse(obj); console.log(c); 控制台输出 {'a':1,'b':2} Uncaught SyntaxError: Unexpected token ' at PageFrame/s

大哥大姐们,谁看到了可一定要帮忙哈!我编了个小程序,在本地测试成功!但传到客服服务器上(在服务器内部iis里浏览:无法访问或该页不存在,在外面通过浏览器访问:出现:Server Error in &amp;amp;#x27;/&amp;amp;#x27; Application.

问题描述 大哥大姐们,谁看到了可一定要帮忙哈!我编了个小程序,在本地测试成功!但传到客服服务器上(在服务器内部iis里浏览:无法访问或该页不存在,在外面通过浏览器访问:出现:ServerErrorin'/'Application.--------------------------------------------------------------------------------RuntimeErrorDescription:Anapplicationerroroccurredonthe

做freemarker练习,用测试类测试成功了,转到页面就报错了?

问题描述 做freemarker练习,用测试类测试成功了,转到页面就报错了? 用测试类测试的时候都找到了,完全能实现功能,换成用servlet就报错 java.io.FileNotFoundException: Templates does not exist. 求大神指点这是什么情况 解决方案 配置不对,错误信息很清楚了,没有找到模版文件,检查下模版路径设置对了没有 解决方案二: 养成好习惯 提问的 报错信息多给点

D1net阅闻:银联与京东金融宣布区块链合作测试成功

银联与京东金融宣布区块链合作测试成功 本次合作是中国银联与互联网企业之间建设的首条联盟链,也是继今年1月份银联和京东金融签订战略合作协议之后的重要落地项目之一. 微软宣布Windows Defender重大漏洞的补丁将在未来两天内推送 微软宣布,两位谷歌工程师提交的Windows Defender重大漏洞已经修复,软件补丁将在未来两天推送至用户的电脑.根据此前谷歌工程师的说法,该漏洞会使Windows系统变得容易遭受远程攻击 ,黑客通过电子邮件,在用户没有打开邮件的情况下即可完成对系统的入侵.

图片-使用restclient能够测试成功,但是用单元测试报错,求大神

问题描述 使用restclient能够测试成功,但是用单元测试报错,求大神 解决方案