多字符集与宽字符集的互相转换

闲懒的可以直接下载我做的公共类   https://download.csdn.net/download/qq_37059136/11004128

 

这里要使用的主要是MultiByteToWideChar和WideCharToMultiByte

头文件定义一个类

class CCBW
{
public:
	//多字节转宽字节
	int CharToWideChar(char * cInput,WCHAR * &wcOutput);  //实现
	//宽字节转多字节
	int WideCharToChar(WCHAR * wcInput,char *&cOutput);   //实现
	//释放空间
	int Delete(WCHAR * &p);  //实现
	int Delete(char * &p);   //实现
protected:
private:
};

源文件实现

/*******************************************************************************
函数名称:CharToWideChar
函数说明:将CHAR转为WCHAR
输入参数:
char * cInput                      :输入的CHAR*字符串
WCHAR * &wcOutput                  :输出的WCHAR*字符串
输出参数:
无
返 回 值:int

作    者:lijilei
修改日期:2018-11-22
修改说明:基础版本
*******************************************************************************/
int CCBW::CharToWideChar(char * cInput,WCHAR * &wcOutput)
{
	int iUnicode = MultiByteToWideChar(CP_ACP, 0, cInput, strlen(cInput), NULL, 0);
	wcOutput = new WCHAR[iUnicode + 2];
	if (wcOutput)
	{
		ZeroMemory(wcOutput, iUnicode + 2);
	}
	MultiByteToWideChar(CP_ACP, 0, cInput, strlen(cInput), wcOutput, iUnicode);
	wcOutput[iUnicode] = '\0';
	wcOutput[iUnicode+1] = '\0';

	return TRUE;
}


/*******************************************************************************
函数名称:CharToWideChar
函数说明:将CHAR转为WCHAR
输入参数:
WCHAR * wcInput                      :输入的WCHAR*字符串
char * &cOutput                      :输入的CHAR*字符串

输出参数:
无
返 回 值:int

作    者:lijilei
修改日期:2018-11-22
修改说明:基础版本
*******************************************************************************/
int CCBW::WideCharToChar(WCHAR *wcInput, char *&cOutput)
{
	int len = wcslen(wcInput);
	int ichar = WideCharToMultiByte(CP_ACP,0,wcInput,len,NULL,0,NULL,NULL);
	cOutput = new char[ichar + 1];
	if (cOutput)
	{
		ZeroMemory(cOutput,ichar+1);
	}
	WideCharToMultiByte(CP_ACP,0,wcInput,len,cOutput,ichar,NULL,NULL);
	cOutput[ichar] = '\0';

	return TRUE;
}


/*******************************************************************************
函数名称:Delete
函数说明:释放指针
输入参数:
WCHAR * &p                     :待释放空间的指针的引用
输出参数:
无
返 回 值:int

作    者:lijilei
修改日期:2018-11-22
修改说明:基础版本
*******************************************************************************/
int CCBW::Delete(WCHAR * &p)
{
	if (p)
	{
		delete p;
		p = NULL;
	}
	return TRUE;
}


/*******************************************************************************
函数名称:Delete
函数说明:释放指针
输入参数:
WCHAR * &p                     :待释放空间的指针的引用
输出参数:
无
返 回 值:int

作    者:lijilei
修改日期:2018-11-22
修改说明:基础版本
*******************************************************************************/
int CCBW::Delete(char * &p)
{
	if (p)
	{
		delete p;
		p = NULL;
	}
	return TRUE;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值