首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 編譯錯誤:cannot convert parameter from 'const unsigned short *' to 'const char *' 根因與修復

     編輯:程式設計綜合問答

錯誤信息

cannot convert parameter 3 from 'const unsigned short *' to 'const char *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

核心原因

類型不匹配:參數 3 傳入的是 const unsigned short*(寬字符/UTF-16 指針),但函數期望 const char*(窄字符指針)。兩者指向的類型無關,無法隱式轉換。

常見誤區

  • 以為 unsigned short 和 char 都是整數就能互轉。
  • 實際上是 字符編碼差異:unsigned short* 常用於 UTF-16/wchar_t 字符串,char* 用於 ANSI/UTF-8。
  • 另一種可能:參數順序搞錯,將字符串指針傳到了整數參數位置,或反之。

修復策略

  1. 檢查函數簽名:確認該參數應傳何種類型的字符串(ANSI/Unicode)。
  2. 統一字符集:項目屬性 → Character Set 設置為「Use Unicode Character Set」或「Not Set」並顯式使用 wchar_t/TCHAR。
  3. 顯式轉換:若必須跨字符集調用,使用 WideCharToMultiByte / MultiByteToWideChar 或 std::wstring_convert 進行編碼轉換,而非強制類型轉換。
  4. 核對參數順序:對照文檔逐個核對調用處參數類型與順序。

切忌使用 reinterpret_cast 強行壓制編譯器,會導致運行時訪問違規或亂碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved