打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CString、LPSTR、std::string、LPCSTR之间的转换
userphoto

2016.02.08

关注

LPSTR WideChar2MBCS( 
const CString& strCS )
{
    const UINT wLen = strCS.GetLength() + 1;
    UINT aLen = WideCharToMultiByte(CP_ACP,0,strCS,wLen,NULL,0,NULL,NULL);
    LPSTR lpa = new char[aLen];
    WideCharToMultiByte(CP_ACP,0,strCS,wLen,lpa,aLen,NULL,NULL);
    return lpa;
}


std::
string WideChar2StdStr(const CString& strcs)
{
    LPSTR l = WideChar2MBCS(strcs);
    std::string stdStr(l);
    delete [] l;
    return stdStr;
}


LPOLESTR MBCS2WideChar( LPCSTR lpa )
{
    size_t aLen = strlen(lpa) + 1;
    int wLen = MultiByteToWideChar(CP_ACP,0,lpa,aLen,NULL,0);
    LPOLESTR lpw = new WCHAR[wLen];
    MultiByteToWideChar(CP_ACP,0,lpa,aLen,lpw,wLen);
    return lpw;
}


CString MBCS2CString( LPCSTR lpa )
{
    LPOLESTR lpw = MBCS2WideChar(lpa);
    CString cstring(lpw);
    delete [] lpw;
    return  cstring;
}


CString StdStr2CSting( 
const std::string& stdStr )
{
    
return MBCS2CString(stdStr.c_str());
}

#include<string>
using namespace std;
//将string转换成wstring
wstring string2wstring(string str)
{
wstring result;
//获取缓冲区大小,并申请空间,缓冲区大小按字符计算
int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0);
TCHAR* buffer = new TCHAR[len + 1];
//多字节编码转换成宽字节编码
MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len);
buffer[len] = '\0'; //添加字符串结尾
//删除缓冲区并返回值
result.append(buffer);
delete[] buffer;
return result;
}
//将wstring转换成string
string wstring2string(wstring wstr)
{
string result;
//获取缓冲区大小,并申请空间,缓冲区大小事按字节计算的
int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL);
char* buffer = new char[len + 1];
//宽字节编码转换成多字节编码
WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL);
buffer[len] = '\0';
//删除缓冲区并返回值
result.append(buffer);
delete[] buffer;
return result;
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C++各种类型转换,期待你的加入,共同完善
Unicode下CString(wchar_t)转换为 char*
GetBuffer与ReleaseBuffer的用法
ANSI编码方式转化为UTF
USES_CONVERSION宏定义
注册表方式获取本机串口数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服