C++ 字符编码转换工具类

来源:互联网 发布:小米2a移动网络设置 编辑:程序博客网 时间:2024/05/18 23:53

将网上朋友写的一下工具函数稍作更改封装成了C++类,方便以面向对象的方式编程

头文件:

#ifndef EVNHELPER_H#define EVNHELPER_H#include <string>#include <iostream>using namespace std;class EnvHelper{public:EnvHelper();~EnvHelper();static string UnicodeToANSI( const wstring& str );static wstring UTF8ToUnicode( const string& str );static wstring ANSIToUnicode( const string& str );static string UnicodeToUTF8( const wstring& str );};#endif


源文件:

#include "stdafx.h"#include <windows.h>#include <string>#include <iostream>#include "EnvHelper.h"using namespace std;EnvHelper::EnvHelper(){}EnvHelper::~EnvHelper(){}string EnvHelper::UnicodeToANSI( const wstring& str ){ char*     pElementText; int    iTextLen; // wide char to multi char iTextLen = WideCharToMultiByte( CP_ACP,         0,         str.c_str(),         -1,         NULL,         0,NULL,         NULL ); pElementText = new char[iTextLen + 1]; memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) ); ::WideCharToMultiByte( CP_ACP,         0,         str.c_str(),         -1,         pElementText,         iTextLen,         NULL,         NULL ); string strText; strText = pElementText; delete[] pElementText; return strText;}wstring EnvHelper::UTF8ToUnicode( const string& str ){ int  len = 0; len = str.length(); int  unicodeLen = ::MultiByteToWideChar( CP_UTF8,            0,            str.c_str(),            -1,            NULL,            0 );   wchar_t *  pUnicode;   pUnicode = new  wchar_t[unicodeLen+1];   memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));   ::MultiByteToWideChar( CP_UTF8,         0,         str.c_str(),         -1,         (LPWSTR)pUnicode,         unicodeLen );   wstring  rt;   rt = ( wchar_t* )pUnicode; delete  pUnicode;   return  rt;  }wstring EnvHelper::ANSIToUnicode( const string& str ){ int  len = 0; len = str.length(); int  unicodeLen = ::MultiByteToWideChar( CP_ACP,            0,            str.c_str(),            -1,            NULL,            0 );   wchar_t *  pUnicode;   pUnicode = new  wchar_t[unicodeLen+1];   memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));   ::MultiByteToWideChar( CP_ACP,         0,         str.c_str(),         -1,         (LPWSTR)pUnicode,         unicodeLen );   wstring  rt;   rt = ( wchar_t* )pUnicode; delete  pUnicode;   return  rt;  }string EnvHelper::UnicodeToUTF8( const wstring& str ){ char*     pElementText; int    iTextLen; // wide char to multi char iTextLen = WideCharToMultiByte( CP_UTF8,         0,         str.c_str(),         -1,         NULL,         0,         NULL,         NULL ); pElementText = new char[iTextLen + 1]; memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) ); ::WideCharToMultiByte( CP_UTF8,         0,         str.c_str(),         -1,         pElementText,         iTextLen,         NULL,         NULL ); string strText; strText = pElementText; delete[] pElementText; return strText;}


 

0 0
原创粉丝点击