终于搞定在VS2008中将CString转换为constchar* .
2013-03-22 09:27
501 查看
原来用VC6.0那有这些繁琐事情啊,现在用了VC2008开始还是有些不习惯,不过VS2008对C++标准更近了,慢慢熟悉起来就会好的。最多的问题就是在VC6.0中编译通过的代码转换到2008之后报致命错误,不过大部分都能一一修改过来,最近就是碰到了CString 转 const char *的问题。
以前只要简单的一个强制转换就OK了,可现在是不行了,搜索了很多资料,终于搞定,主要是Unicode和ANSI的问题,只要做一个转换就可以了,不过这个过程远没有6.0来的那么轻松。下面函数可以解决此问题。
const char* CStrToChar(CString strSrc)
{
#ifdef UNICODE
DWORD dwNum = WideCharToMultiByte(CP_OEMCP, NULL, strSrc.GetBuffer(0), -1, NULL, 0, NULL, FALSE);
char *psText;
psText = new char[dwNum];
if (!psText)
delete []psText;
WideCharToMultiByte(CP_OEMCP, NULL, strSrc.GetBuffer(0), -1, psText, dwNum, NULL, FALSE);
return (const char*)psText;
#else
return (LPCTSRT)strSrc;
#endif
}
以前只要简单的一个强制转换就OK了,可现在是不行了,搜索了很多资料,终于搞定,主要是Unicode和ANSI的问题,只要做一个转换就可以了,不过这个过程远没有6.0来的那么轻松。下面函数可以解决此问题。
const char* CStrToChar(CString strSrc)
{
#ifdef UNICODE
DWORD dwNum = WideCharToMultiByte(CP_OEMCP, NULL, strSrc.GetBuffer(0), -1, NULL, 0, NULL, FALSE);
char *psText;
psText = new char[dwNum];
if (!psText)
delete []psText;
WideCharToMultiByte(CP_OEMCP, NULL, strSrc.GetBuffer(0), -1, psText, dwNum, NULL, FALSE);
return (const char*)psText;
#else
return (LPCTSRT)strSrc;
#endif
}
相关文章推荐
- 终于搞定在VS2010中将CString转换为const char*
- 终于搞定在VS2008中将CString转换为constchar*
- vs2008 Unicode编码CString转换为const char* 、int、void * 、LPWSTR
- VC2008中将CString转换成const char*的一种有效方法
- 在VS2010中将CString转换为const char*
- VS2010中将CString转换为constchar*
- 在VS中将CString转换为const char*
- vs2008 Unicode编码CString转换为const char* 、int、void * 、LPWSTR .
- VS2010中将CString转换为constchar*
- 不能将参数 1 从“CString”转换为“const char *”
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等
- CString转换成const char*的方法
- CString, const char*,string与Unicode,multi-byte字符集转换
- 关于CString剖析,“strcmp”: 不能将参数1从“CString”转换为“const char *”问题
- CString const char*与char*之间的转换关系
- C++中int、string、const char*、CString之间的相互转换
- UNICODE下宽字符的CString转换为const char *和char到WCHAR的相互转换
- CString const char*与char*之间的转换关系
- 终于搞定CString和string之间转换的问题了
- error C2664: strcpy : 不能将参数 2 从 CString 转换为 const char *;error C2440: “初始化”: 无法从“const wchar_t [15]”