multibytetowidechar(MultiByteToWideChar函数使用问题)

本文目录
- MultiByteToWideChar函数使用问题
- MultiByteToWideChar()函数
- vc multibytetowidechar 在哪个库
- 谁能给个MultiByteToWideChar和WideCharToMultiByte用法的例子
MultiByteToWideChar函数使用问题
1)int nLen = MultiByteToWideChar(CP_ACP, 0, buf, -1, NULL, 0);//确定转换为Unicode需要多少缓冲区(返回值也包含了最后一个NULL字符)。
2)WCHAR wBuf[nLen];
3)MultiByteToWideChar(CP_ACP, 0, buf, -1, wBuf, nLen);
4)tm_str_oldSr = wBuf;
共4步。由于MultiByteToWideChar是个WIN32 API函数,不提供对CString的直接支持,尽管CString有内置的类型转换功能和缓冲区分配机制。但感觉在这里,还是先用个WCHAR的临时缓冲区作为MultiByteToWideChar的参数更方便。然后直接把wBuf得到的内容赋值给tm_str_oldSr。
MultiByteToWideChar()函数
pWideStr = malloc( iLength ) ; //分配6字节内存
会导致溢出,而且 C++ 建议使用 new 和 delete 代替 malloc 和 free:
pWideStr = new WCHAR[iLength + 1] ; //分配(6+1)*2=14字节内存
MultiByteToWideChar( CP_ACP, 0, pStringIn, -1, pWideStr, iLength );
pWideStr[iLength] = 0; // 追加 \0
...
delete pWideStr;
vc multibytetowidechar 在哪个库
这个是WINAPI,#include 《windows.h》
int MultiByteToWideChar(
UINT CodePage, // 指定执行转换的字符集
DWORD dwFlags, // 一组位标记用以指出是否未转换成预作或宽字符(若组合形式存在),是否使用象形文字替代控制字符,以及如何处理无效字符。
LPCSTR lpMultiByteStr, // 指向将被转换字符串的字符
int cchMultiByte, // 指定由参数lpMultiByteStr指向的字符串中字节的个数。
LPWSTR lpWideCharStr, // 指向接收被转换字符串的缓冲区
int cchWideChar // 指定由参数lpWideCharStr指向的缓冲区的宽字符个数。
);
// 如果函数运行成功,并且cchWideChar不为零,返回值是由lpWideCharStr指向的缓冲区中写入的宽字符数;如果函数运行成功,并且cchWideChar为零,返回值是接收到待转换字符串的缓冲区所需求的宽字符数大小。如果函数运行失败,返回值为零
谁能给个MultiByteToWideChar和WideCharToMultiByte用法的例子
/************************************
* 函数说明: Utf8转换为Unicode
* 返 回 值: wstring
* 参数说明: szSrcText
* 注意事项:
************************************/
wstring UTF8ToUnicode( const string szSrcText )
{
int len = 0;
len = szSrcText.length();
int unicodeLen = ::MultiByteToWideChar( CP_UTF8,
0,
szSrcText.c_str(),
-1,
NULL,
0 );
wchar_t * pUnicode;
pUnicode = new wchar_t[unicodeLen+1];
memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));
::MultiByteToWideChar( CP_UTF8,
0,
szSrcText.c_str(),
-1,
(LPWSTR)pUnicode,
unicodeLen );
wstring rt;
rt = ( wchar_t* )pUnicode;
delete pUnicode;
return rt;
}
/************************************
* 函数说明: Unicode转换为Utf8
* 返 回 值: wstring
* 参数说明: szSrcText
* 注意事项:
************************************/
string UnicodeToUTF8( const wstring szSrcText )
{
char* pElementText;
int iTextLen;
// wide char to multi char
iTextLen = WideCharToMultiByte( CP_UTF8,
0,
szSrcText.c_str(),
-1,
NULL,
0,
NULL,
NULL );
pElementText = new char[iTextLen + 1];
memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );
::WideCharToMultiByte( CP_UTF8,
0,
szSrcText.c_str(),
-1,
pElementText,
iTextLen,
NULL,
NULL );
string strText;
strText = pElementText;
delete pElementText;
return strText;
}
字符编码转换用的

更多文章:
another time(another time和other time的区别)
2026年10月11日 05:00








