[英]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.