浅谈 cstring转换string

其实这个问题也是困扰我的问题,尤其是在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这种就不细表了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值