簡體   English   中英

如何將char / *轉換為wchar_t / * ---但是

[英]How to convert char/* to wchar_t/* ---but

我正在將一個(相當)舊的C代碼轉換為VS2010。 當我使用multibyte選項編譯程序時,一切正常,但我必須將其轉換為UNICODE。

我收到了很多與字符串對話相關的錯誤消息(但這並不奇怪)。 我的問題與我必須使用wchar字符串(因為UNICODE)有關,但我還必須保留標准字符值(程序需要使用標准的ascii代碼將數據寫入文件)。

為了更清楚,使用Windows需要UNICODE,但文件必須保存為ascii格式。 我在很多地方收到錯誤,這就是我決定在這里提出這個問題的原因。

May somoene建議這種問題的最佳做法是什么?

先感謝您!

編輯:

好吧,我不是C / C ++的專家,這是我的第一個大型項目。 我從第一個答案中嘗試過你的建議:}

    { 
TCHAR* strz1=_T("%u blocks converted.");
      if (n>0) 
      {
      sprintf(str,strz1,n)
      }
      else
      TCHAR* strz2=_T("No blocks found!"); 
      sprintf(str,strz2);
      TCHAR* strz3=_T("Status");
      MessageBoxW(hwnd,str,strz3,MB_OK|MB_ICONINFORMATION);
      return(fe);
    }

我得到了有名的錯誤:

錯誤C2664:'sprintf':無法將參數2從'TCHAR *'轉換為'const char *'

錯誤C2664:'MessageBoxW':無法將參數2從'char [32]'轉換為'LPCWSTR'

如果您使用的是MFC,請檢查CString: ATL和MFC字符串轉換宏的這些轉換宏

這樣你就可以用UTF-8導出你的文件並將它們從UTF-8讀回UTF-16,這是存儲wchar_s的自然方式。 這樣,您的應用程序可以使用UNICODE並仍然以ASCII格式導出(UTF-8向后兼容ASCII)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM