UNICODE環境下使用STL
最近在處理一個小程式時,發現以往寫的小工具類別程式碼,因為都是基於多位元組字組的方式開發的,所以在使用STL時,也都直接使用多字元組字集(MBCS)的函式。 這些程式碼在引用到用新的V S2008(或VS2005)上面時,因為新專案一開始就預設是使用UNICODE了,所以一編譯起來就出現一堆的錯誤。 為了改正這些錯誤,並且讓舊程式碼也能在舊程式中正常編譯,就必須使用一些小技巧。 目前己知的錯誤大都是: string在UNICODE環境中,要改為wstring ifstream 在UNICODE環境中,要改為wifstream 為了能通用於所有環境,我是寫了一個小的標頭檔,在這個標頭檔中會依目前是否有定義巨集UNICODE 或 _UNICODE來決定要使用string / wstring 大致上的內容如下: #pragma once #include <string> using namespace std; #if defined( _UNICODE ) || defined( UNICODE ) typedef wstring STLString; typedef wifstream tifstream; #else typedef string STLString; typedef ifstream tifstream; #endif 不過,使用這個標頭檔的話,還是得要將舊程式碼中的string改為STLString才行。大部份舊程式就不用改了,那新的程式可能就是要養成習慣都使用通用的類別名稱STLString(之類的) 在CodeProject中也有找到類似的資料, 可參考一下 。