当前位置:  编程技术>c/c++/嵌入式

C++多字节字符与宽字节字符相互转换

    来源: 互联网  发布时间:2014-10-11

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

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

#include
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

    
 
 

您可能感兴趣的文章:

  • 无效的多字节字符
  • 如何得到字符串的字节长度?
  • uft_8码中有占4字节的中文字符吗?
  • 一个字符占几个字节?
  • 高手请教如何取一字符串的长度(不是字节长度)
  • 如何处理客户机和服务器使用不同字符集(包括双字节字符)上传或下载文件时文件名的转换问题
  • vbs:一段比较精简的代码实现取得字符串的"字节"数
  • 从字符串中截取等长字节的Java代码
  • c# 获取字符串的字节数的方法
  • 一个关于字节和字符窜转换的问题(在线等待)
  • Java 按照字节来截取字符串的代码(不会出现半个汉字)
  • C#实现根据字节数截取字符串并加上省略号的方法
  • c#获取字符串宽度的示例代码(字节数方法)
  • 各位大侠:linux/unix下有什么双字节的字符类型及其一整套处理函数? 高分送出,请帮帮小弟!!!!!!
  • C#根据字节数截取字符串与替换匹配内容的方法
  • Java 将字符串动态生成字节码的实现方法
  • Javascript 字符串字节长度计算函数代码与效率分析(for VS 正则)
  • C# 16进制与字符串、字节数组之间的转换
  • 在C++中怎样定义一个半字节变量??
  • 浅析C++字节对齐容易被忽略的两个问题
  • 请问各位,java是跨平台的,但如果c++改一下编译器,也编译成字节码让虚拟机执行,是不是也跨平台了?
  • 浅谈C++中的string 类型占几个字节
  • 关于C++内存中字节对齐问题的详细介绍
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我是想检查读出的字节和下一字节是不是相等,但从现在的输出来看,它输出的每一个字节都是显示 [B@77d134 ,如何进行字节的比较,用这种
  • InputStream读不了1000个字节后面的字节,怎么回事?
  • wchar_t 2字节?4字节?在线
  • socket程序中read字节个数与write字节个数不同
  • 【请教】read()返回的字节数远远小于write()返回的字节数,接收数据不完整。虚心求解
  • 什么时候可以不用网络字节序
  • 字节序的问题
  • 【提问】关于字节 字的问题
  • 字节码阅读器 JClassLib
  • Fedora 一个汉字占几个字节??
  • linux C 下char类型有几字节呀?
  • 控制shell脚本输出的字节数
  • 字节对齐
  • linux下如何计算8字节双精度浮点数double?
  • 关于字节最齐的默认值问题
  • 大侠来解释下,系统,编译器,与变量字节的关系
  • 关于字节对齐问题????????????????
  • 用g++开发,怎么设置结构(struct)1字节对齐?
  • 被TCP协议填充了1000个字节,为什么?
  • 8位 512字节的ecc校验




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3