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

2016-02-19 11:53 26 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的C++多字节字符与宽字节字符相互转换,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - 编程语言 】

最近在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);
coutcendl;
CUser u;
char* pBuffer=u.WcharToChar(szFullPath);
couttotalNum" "pBufferendl;

来源:http://www.tulaoshi.com/n/20160219/1598970.html

延伸阅读
标签: ASP
  string[] A; string B = "abcd@@efg@@sdff;"; string C=abcde@efgasdfl@sdlfjs; 如果要分割C很容易,只需如此即可: A = C.Split('@'); 结果: A[0] = "abcde"; A[1] = "efgasdfl"; A[2] = "sdlfjs"; 如果要分割B呢?最简单的办法就是先把@@替换为单字符串了。 A = B.Replace("@@","$").Split('$'); A[0] = "abcd"; A[1] = "efg"; ...
标签: 办公软件
   众所周知,Word与WPS是国内最为常用的文字处理系统。该如何实现Word和WPS文档的相互转换呢?可用如下方法:      Word文档转为WPS文档     在WPS 2000的安装盘中,有一个不引人注目的文件叫做Word2wps.exe,这是一个自解压文件,双击之可安装。然后重新启动计算机,打开WPS 2000...
   我们知道,Java的数据类型分为三大类,即布尔型、字符型和数值型,而其中数值型又分为整型和浮点型;相对于数据类型,Java的变量类型为布尔型boolean;字符型char;整型byte、short、int、long;浮点型float、double。其中四种整型变量和两种浮点型变量分别对应于不同的精度和范围。此外,我们还经常用到两种类变量,即String...
标签: 电脑入门
一、convert语法及说明 语法: CONVERT(number, from_unit, to_unit) 参数说明 Number 必需。以 from_units 为单位的需要进行转换的数值。 From_unit 必需。数值 number 的单位。 To_unit 必需。结果的单位。 例子如下: 比如,B12单元格的值为200 那么,当我们使用如下公式: =CONVERT(D12,"day","yr")就代表了...
标签: PHP
    在C/C++中,头文件ctype.h中定义了关于字符类型一组宏,可以得到给定字符的类型。 而PHP中没有相关函数。前些天发现在www.mm4.de下载的PHP中提供了一个名为php_ctype.dll的扩展库, 加载后发现提供一部分此类的函数,特整理出来供大家参考。   在PHP中正确加载php_ctype.dll文件后,用<?php phpinfo();?可...

经验教程

596

收藏

29
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部