- 5
- 0
- 约2.03万字
- 约 21页
- 2019-08-11 发布于河北
- 举报
vc宽字符转换代码
宽字符转换:宽字符转换的相关代码
疯狂代码 http://CrazyC/ ĵ http:/CrazyC/VC/Article65491.html
. C中和w互转
第中思路方法:WideToMutilByte和MutilByteToWide
WideToMutilByte(const w _src)
{
nBufSize = WideCharToMultiByte(GetACP, 0, _src.c_str,-1, NULL, 0, 0, FALSE);
char *szBuf = char[nBufSize];
WideCharToMultiByte(GetACP, 0, _src.c_str,-1, szBuf, nBufSize, 0, FALSE);
strRet(szBuf);
delete szBuf;
szBuf = NULL;
strRet;
}
w MutilByteToWide(const _src)
{
// 计算串 转成 wchar_t 的后占用内存字节数
nBufSize = MultiByteToWideChar(GetACP,0,_src.c_str,-1,NULL,0);
// 为 wsbuf 分配内存 BufSize 个字节
wchar_t *wsBuf = wchar_t[nBufSize];
// 转化为 unicode WideString
MultiByteToWideChar(GetACP,0,_src.c_str,-1,wsBuf,nBufSize);
w wstrRet(wsBuf);
delete wsBuf;
wsBuf = NULL;
wstrRet;
}
代码:
#
# windows.h
using std;
// Converting a WChar to a Ansi
std WChar2Ansi(LPCWSTR pwszSrc)
{
nLen = WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, NULL, 0, NULL, NULL);
(nLen= 0)
std ();
char* pszDst = char[nLen];
(NULL pszDst)
std ();
WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, pszDst, nLen, NULL, NULL);
pszDst[nLen -1] = 0;
std strTemp(pszDst);
delete pszDst;
strTemp;
}
ws2s(w inputws)
{
WChar2Ansi(inputws.c_str);
}
// Converting a Ansi to WChar
std w Ansi2WChar(LPCSTR pszSrc, nLen)
{
nSize = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pszSrc, nLen, 0, 0);
(nSize = 0)
NULL;
WCHAR *pwszDst = WCHAR[nSize+1];
( NULL pwszDst)
NULL;
MultiByteToWideChar(CP_ACP, 0,(LPCSTR)pszSrc, nLen, pwszDst, nSize);
pwszDst[nSize] = 0;
(pwszDst[0] 0xFEFF) // skip Oxfeff
{
for( i = 0; i nSize; i )
{
pwszDst[i] = pwszDst[i+1];
}
}
w wcharString(pwszDst);
delete pwszDst;
wcharString;
}
std w s2ws(const s)
{
Ansi2WChar(s.c_str
原创力文档

文档评论(0)