C++实现String与UF8互转

C++实现String与UF8互转

UTF8_To_String #include<Stringapiset.h> #include <iostream> std::string UTF8_To_String(const std::string& str) { int nwLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0); wchar_t* pwBuf = new wchar_t[nwLen + 1];//一定要加1,不然会出现尾巴 memset(pwBuf, 0, nwLen * 2 + 2); MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), pwBuf, nwLen); int nLen = WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, NULL, NULL, NULL, NULL); char* pBuf = new char[nLen + 1]; memset(pBuf, 0, nLen + 1); WideCharToMultiByte(CP_ACP, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL); std::string retStr = pBuf; delete[]pBuf; delete[]pwBuf; pBuf = NULL; pwBuf = NULL; return retStr; } String_To_UTF8 #include<Stringapiset.h> #include <iostream> std::string String_To_UTF8(const std::string& str) { int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0); wchar_t* pwBuf = new wchar_t[nwLen + 1];//一定要加1,不然会出现尾巴 ZeroMemory(pwBuf, nwLen * 2 + 2); ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), pwBuf, nwLen); int nLen = ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL); char* pBuf = new char[nLen + 1]; ZeroMemory(pBuf, nLen + 1); ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL); std::string retStr(pBuf); delete[]pwBuf; delete[]pBuf; pwBuf = NULL; pBuf = NULL; return retStr; }

到此这篇关于C++实现String与UF8互转的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易知道(ezd.cc)。

推荐阅读

    i54590/gtx750仅2999元

    i54590/gtx750仅2999元,,1。全面的优秀主机满足用户的主要需求 学生们已经正式迎来了学校,高中是一个阶段的冲刺需要,大多数学生的最后阶段

    6812元i5+760+GTX460最稳定构型

    6812元i5+760+GTX460最稳定构型,,酷睿i5 760在主要市场的英特尔,而且在最终产品中最具性价比的,是中流砥柱。多亏了酷睿i5 760睿频加速技术

    电脑显卡gt好吗|gt什么显卡好

    电脑显卡gt好吗|gt什么显卡好,,gt什么显卡好610是520的马甲卡,性能好10-20%的样子。但是玩游戏是一样的渣渣。亮机卡而已。GT游戏显卡HD是A

    反击开始hd7950挑战gtx660ti

    反击开始hd7950挑战gtx660ti,,评价综述: 游戏的评价,hd7950评分的新版本提高8%的性能,以及更近的hd7970,gtx660ti差距的公共版本更为明显,甚

    699元9600gt1G和9800gt买谁

    699元9600gt1G和9800gt买谁,,如果在价格相同的情况下,9600gt 9800GT,玩家必须毫不犹豫地选择9800GT,但话又说回来,如果9600GT配备1GB内存,512M