linux C++ Utf8toGb2312 Gb2312toUtf8 MyA2W和MyW2A实现
来源:互联网 发布:淘宝店换类目有影响吗 编辑:程序博客网 时间:2024/06/06 00:44
CHealper.h
#ifndef __CHELPER_H__#define __CHELPER_H__#include <string>int Utf8toGb2312(const char *sourcebuf, size_t sourcelen, char *destbuf, size_t* destlen);int Gb2312toUtf8(const char *sourcebuf, size_t sourcelen, char *destbuf, size_t* destlen);std::wstring MyA2W(std::string buf);std::string MyW2A(std::wstring buf);#endif
CHealper.cpp
#include <stdio.h>#include <iconv.h>#include <string.h>#include <stdlib.h>#include "CHelper.h"using namespace std;int Utf8toGb2312(const char *sourcebuf, size_t sourcelen, char *destbuf, size_t* destlen) {iconv_t cd;if ((cd = iconv_open("gb2312", "utf-8")) == 0)return -1;memset(destbuf, 0, *destlen);char **source = (char**)&sourcebuf;char **dest = &destbuf;if (-1 == iconv(cd, source, &sourcelen, dest, destlen))return -1;iconv_close(cd);return 0;}int Gb2312toUtf8(const char *sourcebuf, size_t sourcelen, char *destbuf, size_t* destlen) {iconv_t cd;if ((cd = iconv_open("utf-8", "gb2312")) == 0)return -1;memset(destbuf, 0, *destlen);char **source = (char**)&sourcebuf;char **dest = &destbuf;if (-1 == iconv(cd, source, &sourcelen, dest, destlen))return -1;iconv_close(cd);return 0;}/************************************************************************//* string to wstring *//************************************************************************/std::wstring MyA2W(std::string strBuf) {std::wstring strValue = L"";if (strBuf.length() <= 0)return strValue;setlocale(LC_CTYPE, "zh_CN.utf8");size_t nDestLen = mbstowcs(nullptr, strBuf.c_str(), 0) + 1;if (nDestLen == size_t(-1) )return strValue;wchar_t* pBuf = nullptr;pBuf = new wchar_t[nDestLen];if (!pBuf)return strValue;mbstowcs(pBuf, strBuf.c_str(), nDestLen);strValue = pBuf;if (pBuf)delete [] pBuf, pBuf = nullptr;return strValue;}/************************************************************************//* wstring to string *//************************************************************************/std::string MyW2A(std::wstring strBuf) {std::string strValue = "";if (strBuf.length() <= 0)return strValue;size_t nSize = strBuf.length() * sizeof(strBuf[0]);char* pBuf = nullptr;pBuf = new char[nSize];if (!pBuf)return strValue;size_t nDestLen = wcstombs(pBuf, strBuf.c_str(), nSize);if (nDestLen == size_t(0))return strValue;strValue = pBuf;if (pBuf)delete[] pBuf, pBuf = nullptr;return strValue;}
阅读全文
0 0
- linux C++ Utf8toGb2312 Gb2312toUtf8 MyA2W和MyW2A实现
- java UTF8ToGB2312
- Linux C Socket简介和实现
- mv 和 rename的区别和Linux C实现
- Linux下c语言实现DES和3DES算法
- linux 下C实现获取网卡IP和MAC地址
- C 语言实现linux读取和修改IP地址
- Linux c实现一个tcp文件服务器和客户端
- linux下c语言使用libcurl和实现文件上传
- C语言实现windows和linux下socket通信
- Linux下c语言实现DES和3DES算法
- linux下C语言my_memcopy和my_strcpy实现
- Linux C 实现文件传输
- Linux C实现国际化
- Linux C实现文件传输
- linux/C 进度条实现
- Linux C 单链表实现
- linux c 实现随机数
- STL(十一)set集合容器
- C++ bitset
- 单链表的销毁
- 刚开始学jsp,怎么嵌在jsp中的javascript没有执行
- spring-boot-dyna-datasource(spring-boot动态数据源)
- linux C++ Utf8toGb2312 Gb2312toUtf8 MyA2W和MyW2A实现
- 转载:个人开发者账号申请(有史以来最详细最全面最新的讲解)更新于2017/06/28
- javascript弹出框
- android Lint优化代码
- deep learning
- 堆与堆排序
- Mybatis传多个参数(三种解决方案)
- Python进程间通信之共享内存
- Spring系列之Spring常用注解总结