多字符集与宽字符集的互相转换
闲懒的可以直接下载我做的公共类 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;
}
还没有评论,来说两句吧...