博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
std::wstring<-->std::string,char<-->wchar_t
阅读量:5812 次
发布时间:2019-06-18

本文共 2158 字,大约阅读时间需要 7 分钟。

#include
#include
#include
using namespace std;//vs中将string->wstring//问题:对中文不支持wstring utf8_to_wstring(const std::string& str){ wstring_convert
> mconv; return mconv.from_bytes(str);}//vs中将wstring->string//问题:对中文不支持string wstring_to_utf8(const wstring& wstr){ wstring_convert
> mconv; return mconv.to_bytes(wstr);}int main(){ wstring wstr= utf8_to_wstring(string("jiafenggang")); wcout << wstr << endl; wstring wstr1 = L"jiafenggang"; string str = wstring_to_utf8(wstr1); cout << str << endl; return 0;}

如果要对中文支持还是需要WideCharToMultiByte和MultiByteToWideChar

#pragma once#include
#include
class UTIL{public: //功能:将char数组 转换为wchar_t数组 //*ansi->char数组 //返回:生成的wchar_t数组 //注意:用户负责释放返回数组内存 //约定:不会改变用户传入的参数,但用户可以改变返回值 static PWSTR ansi2unic(PCSTR ansi); //功能:将wchar_t数组 转换为char数组 //*unic->wchar_t数组 //返回:生成的char数组 //注意:用户负责释放返回数组内存 //约定:不会改变用户传入的参数,但用户可以改变返回值 static PSTR unic2ansi(PCWSTR unic); //功能:将wchar_t数组 转换为string //*unic->wchar_t数组 //返回:生成的string //约定:不会改变用户传入的参数,但用户可以改变返回值 static std::string unic2str(const wchar_t* unic); //功能:将string 转换为wchar_t数组 //*str->要转换的string //返回:生成的wchar_t数组 //注意:用户负责释放返回数组内存 //约定:不会改变用户传入的参数,但用户可以改变返回值 static wchar_t* str2unic(const std::string& str);private:};

  

#include"util.h"PWSTR UTIL::ansi2unic(PCSTR ansiStr){    PWSTR unicStr=NULL;    DWORD len = MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, unicStr, 0);    unicStr = new wchar_t[len];    MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, unicStr, len);    return unicStr;}PSTR UTIL::unic2ansi(PCWSTR unicStr){    PSTR ansiStr=NULL;    DWORD len = WideCharToMultiByte(CP_ACP, 0, unicStr, -1, ansiStr, 0,NULL,NULL);    ansiStr = new char[len];    WideCharToMultiByte(CP_ACP, 0, unicStr, -1, ansiStr, len, NULL, NULL);    return ansiStr;}std::string UTIL::unic2str(const wchar_t* unicStr){    const char* p = unic2ansi(unicStr);    std::string str(p);    delete p;    return str;}wchar_t* UTIL::str2unic(const std::string& str){    return ansi2unic(str.c_str());}

 

转载于:https://www.cnblogs.com/jiafenggang/p/4784615.html

你可能感兴趣的文章
feginclient和ribbon的重试策略
查看>>
从一次线上故障思考Java问题定位思路
查看>>
Win配置Apache+mod_wsgi+django环境+域名
查看>>
第四届中国汽车产业信息化技术创新峰会将于6月在沪召开
查看>>
linux清除文件内容
查看>>
区块链技术综述
查看>>
翻译 | 3种方式提升云可扩展性
查看>>
WindowManager.LayoutParams 详解
查看>>
在linux下挂载ntfs文件系统分区
查看>>
find的命令的使用和文件名的后缀
查看>>
ckeditor 键盘事件绑定
查看>>
Android的Aidl安装方法
查看>>
Linux中rc的含义
查看>>
NFS详解
查看>>
Linux gpm下console中使用鼠标
查看>>
曾鸣:区块链的春天还没有到来| 阿里内部干货
查看>>
如何通过Dataworks禁止MaxCompute 子账号跨Project访问
查看>>
js之无缝滚动
查看>>
17位女性科学家带你预测2017和2027
查看>>
Django 多表联合查询
查看>>