c++ 如何转换UTF8编码??
2个回答
展开全部
普通sting类型 转UTF-8编码格式字符串std::string ofDewarServer::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;
}
{
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;
}
展开全部
百度上可以搜到UTF8的编码原理,掌握后你就可结合所掌握的C语言编出程序;
UTF8的编程原理,自已搜一下,不复杂。
也可搜到现成的程序,但你肯定看不懂源程序,所以,你第一步就去了解UTF8
的编码原理。
UTF8的编程原理,自已搜一下,不复杂。
也可搜到现成的程序,但你肯定看不懂源程序,所以,你第一步就去了解UTF8
的编码原理。
追问
初学C++,,发现什么都要自己编写- -~不像C#那样,微软都帮你封装起来。
追答
你说的是标准C++,不可能有这乱七八糟的库函数,
一般大型C++也会大量的封装库的,如VC++,C++BUILDER,
再查查WINDOWS API有没有提供UTF8函数,有什么问题
一搜就行了。自已编,也很简单,不就是“位运算”嘛。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询