手机
当前位置:查字典教程网 >编程开发 >C语言 >C++多字节字符与宽字节字符相互转换
C++多字节字符与宽字节字符相互转换
摘要:最近在C++编程中经常遇到需要多字节字符与宽字节字符相互转换的问题,一直自己贴那几句代码。觉得麻烦,于是就自己写了一个类来封装wchar_t...

最近在C++编程中经常遇到需要多字节字符与宽字节字符相互转换的问题,一直自己贴那几句代码。觉得麻烦,于是就自己写了一个类来封装wchar_t与char类型间的转换,其他的,诸如:CString LPWSTRTCHAR CHARLPSTR之间也是一样用

复制代码 代码如下:

#include <iostream>

using namespace std;

class CUser

{

public:

CUser();

virtual~ CUser();

char* WcharToChar(wchar_t* wc);//宽字节转单字节

wchar_t* CharToWchar(char* c); //单字节转宽字节

void Release();//释放资源

private:

char* m_char;

wchar_t* m_wchar;

};

/////////////////////////////////////////////////////////////////////////////////////

/*字符类型 wchar_t char

/*获取字符长度 wcslen() strlen()

/*连接两个字符串 wcscat() strcpy()

/*复制字符串 wcscpy() strcpy()

/*比较两个字符串 wcscmp() strcmp()

/*具体参数详见www.linuxidc.com*/

////////////////////////////////////////////////////////////////////////////////////

CUser::CUser()

:m_char(NULL)

,m_wchar(NULL)

{

}

CUser::~CUser()

{

Release();

}

char* CUser::WcharToChar(wchar_t* wc)

{

Release();

int len= WideCharToMultiByte(CP_ACP,0,wc,wcslen(wc),NULL,0,NULL,NULL);

m_char=new char[len+1];

WideCharToMultiByte(CP_ACP,0,wc,wcslen(wc),m_char,len,NULL,NULL);

m_char[len]='';

return m_char;

}

wchar_t* CUser::CharToWchar(char* c)

{

Release();

int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);

m_wchar=new wchar_t[len+1];

MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);

m_wchar[len]='';

return m_wchar;

}

void CUser::Release()

{

if(m_char)

{

delete m_char;

m_char=NULL;

}

if(m_wchar)

{

delete m_wchar;

m_wchar=NULL;

}

}

使用的时候非常简单了:

复制代码 代码如下:

WCHAR* wc=findData.cFileName;

CUser u;

char* c=u.WcharToChar(wc);

cout<<c<<endl;

CUser u;

char* pBuffer=u.WcharToChar(szFullPath);

cout<<totalNum<<" "<<pBuffer<<endl;

【C++多字节字符与宽字节字符相互转换】相关文章:

关于C++内存中字节对齐问题的详细介绍

C字符串与C++中string的区别详解

解析C++中四种强制类型转换的区别详解

C++中对象的赋值与复制操作详细解析

NSString与C字符串之间的相互转换

C++中的操作符重载详细解析

c语言字符数组与字符串的使用详解

C++对象的动态建立与释放详解

C++运算符重载 成员函数与友元函数详解

用标准c++实现string与各种类型之间的转换

精品推荐
分类导航