在使用VS2010開發C++程序時,由於系統默認字符集是unicode字符集,造成與早期的字符串格式不兼容問題
①Properties — Configuration Properties — General,如下,右邊有個Character Set,將其由“Unicode Character Set”改為“Multi-Byte Character Set”即可
②這樣寫:L"Helloworld!",或者使用通用的_T("Helloworld!")宏的形式,_T定義在tchar.h
VS2010默認是Unicode的,在VC 6.0中編譯成功的項目在VS2010中常會出現類型錯誤。 經常出現的錯誤是:不能從const char *轉換為LPCWSTR 如使用CreateDC("DISPLAY",NULL,NULL,NULL)就會報錯,如果使用強制轉換(LPCWSTR)"DISPLAY",雖然能夠通過,但是編碼會出錯。 可行的辦法是使用 TEXT("DISPLAY")轉換, CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL); 另一種方法是: 項目菜單——項目屬性(最後一個)——配置屬性——常規——項目默認值——字符集,將使用Unicode字符集改為未設置即可。
本人推薦用最後一種方法,即把“Unicode字符集”改為“未設置”。 非常方便。
確實是編碼問題,你可能是從VC6以下版本轉到VS2003以上版本編程的,那麼就存在字符是16位還是32位表示的問題.你可以去翻閱下<windows下的C/C++高級編程>開篇就是講關於變量類型的問題.另有unicode編碼一書.
我的意思與上一位相同.編碼問題可以使用判斷程序是否已經定義#define __Unicode宏來解決