其实这个问题也是困扰我的问题,尤其是在vs2005和vc6.0
在网上有一个大大写了一个关于cstring转换成string的函数,很值得借鉴,但是那是在vs2005下可以使用,到了vc6.0下就不行了
所以在vc6.0下转换形式如下:
cstring CStrTmp = "hello world";
string strTmp = CStrTmp.GetBuffer(CStrTmp.GetLength());
但是这个在vs2005下又会编译出错,因为getbuffer在vs2005下返回的wchar_t型的数据,所以还是只有老实的使用转换函数
//引用别人写的
在vs2005下转换形式:
string C2S(CString cstr)
{
LPTSTR lpsz = new TCHAR[cstr.GetLength()+1];
_tcscpy(lpsz, cstr);
char *p=new char[(cstr.GetLength()+1)*2];
WideCharToMultiByte(CP_ACP, 0, lpsz, -1, p, strlen(p), NULL, NULL);
string str = p;
return str;
}
但是此函数在vc6.0下编译会报错误,因为widechartomultibyte 里面有一个参数在vc6.0下雨vs2005下是不同的数据类型。
至于string转cstring这种就不细表了。