CString 用法

参考:http://www.vckbase.com/document/viewdoc/?id=1094

http://hi.baidu.com/yu_xiyan/item/3ee36b96dab242b983d2958b

http://hi.baidu.com/idealsoft/blog/item/438c68de31c7465dccbf1ab5.html   CString剖析与详解


和 msdn 


字符串截取,和 getbuffer,releasebuffer等用法

CString AppDir = GetModulePath();

//打包压缩部分
CStringA AppDirA = std_convention::unicode2string( AppDir.GetBuffer() ).c_str(); // 右边是const char * 类型
CStringA m_RefDir1 =  std_convention::unicode2string( SrcDir ).c_str();
m_RefDir1 += "\\SetupPack.exe";


zipfie.open_v_zipfile_forzip( m_ResSetupFile.GetBuffer( 255 ) );  // m_ResSetupFile:是CStringA 类型, 该函数所需参数是:char *  类型。



CString sClientName, sClientRight;
char chText[128] = {0};
USES_CONVERSION;
theApp.m_pLanguage->GetString("CWClient","ABOUTBOX","IDS_ABOUT",chText);
sClientName = A2T(chText);
memset(chText , 0 , sizeof(chText));






FilePath 是CString类型:

strcpy(pFileInfo[i].FileName, std_convention::unicode2string( FilePath.GetBuffer( ) ).c_str() );


#include <string>

class std_convention 
{
public:
static std::string unicode2string(const wchar_t* ws, int len = -1)
{
int strlen = len;
if( strlen == -1 )
strlen = wcslen( ws );
std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C";
setlocale(LC_ALL, "chs"); 
const wchar_t* _Source = ws;
size_t _Dsize = 2 * strlen + 1;
char *_Dest = new char[_Dsize];
memset(_Dest,0,_Dsize);
wcstombs(_Dest,_Source,_Dsize);
std::string result = _Dest;
delete []_Dest;
setlocale(LC_ALL, curLocale.c_str());
return result;
}


static std::string wstrtostr(const std::wstring& ws)
{
return unicode2string( ws.c_str(), ws.size() );
}


static std::wstring ansii2wstring( const char* str, int len = -1 )
{
int stringlen = len;
if( stringlen == -1 )
stringlen = strlen( str );
setlocale(LC_ALL, "chs"); 
const char* _Source = str;
size_t _Dsize = stringlen + 1;
wchar_t *_Dest = new wchar_t[_Dsize];
wmemset(_Dest, 0, _Dsize);
mbstowcs(_Dest,_Source,_Dsize);
std::wstring result = _Dest;
delete []_Dest;
setlocale(LC_ALL, "C");
return result;
}


static std::wstring strtowstr(const std::string& s)
{
return ansii2wstring( s.c_str(), s.size() );
}
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值