浅谈 cstring转换string

来源:互联网 发布:路由器最多有几个端口 编辑:程序博客网 时间:2024/06/04 19:22

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

原创粉丝点击