寫了一個UFT-8 轉換 ShiftJIS 的函式,
啟動時顯示發生例外,
求大神幫忙看看哪里錯了
BOOL UTF8ToShiftJIS(const char* src, char* dest)
{
// UTF-8からUnicodeに変換した場合の長さを求める。
int iWideLength = ::MultiByteToWideChar(CP_UTF8, 0, src, strlen(src), NULL, 0);
if (iWideLength == 0) return FALSE;
LPWSTR lpWideString = new WCHAR[iWideLength];
int iLength = 0;
if (// UTF-8からUnicodeに変換する。
(::MultiByteToWideChar(CP_UTF8, 0, src, strlen(src), lpWideString, iWideLength) == 0)
// UnicodeからShift_JISに変換した場合の長さを求める。
|| ((iLength = ::WideCharToMultiByte(CP_ACP, 0, lpWideString, iWideLength, NULL, 0, NULL, NULL)) == 0)
// UnicodeからShift_JISに変換する。
|| (::WideCharToMultiByte(CP_ACP, 0, lpWideString, iWideLength, dest, iLength, NULL, NULL) == 0)) {
// 変換に失敗
delete lpWideString;
return FALSE;
}
// 変換に成功
delete lpWideString;
return TRUE;
}
uj5u.com熱心網友回復:
PWSTR lpWideString = new WCHAR[iWideLength];多new一個字符就是?1,你可以debug一下轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/266439.html
標籤:C++ 語言
上一篇:Python學習筆記(一)
下一篇:逆序數演算法
