windows 程式設計遇見最多問題莫過於這倆字元編碼格式了。 有時候工程中用unicode 編碼。而呼叫一些老版本的庫 這些庫採用多字元編碼。在用時需要使用到widechartomultibyte 函式進行轉換。 一次我在合別人**到工程中時候看到廣泛採用"char"形式的字串,然後在較高版本的vs 中工程基本都是 unicode 編碼。
1> 一種方法是 把原先**編譯成庫函式直接呼叫 改動少;
2> 另一種方法是更改源**系統呼叫函式為多字元 微軟一般系統呼叫有兩種形式,採用巨集定義在不同平台使用系統呼叫;
fuctionnamea(...)
fuctionnamew(...)
#ifdef _unicode
#define fuctionname fuctionnamew
#else
#define fuctionname fuctionnamea
#endif
所以只能顯示的更改函式fuctionname =》 fuctionnamea 完成轉化。
3> 使用tchar型別 標頭檔案。
#ifdef _unicode
#define tchar wchar_t
#define _t (x ) l ## x
...#else
#define tchar char
#define _t (x ) x
...#endif
... 為相應字符集操作函式巨集定義 所有函式在部落格 中可以查閱。
更改後以後在windows 程式設計無論ascall 還是unicode 都可以拿出來直接使用方便。
總結:使用windows api 程式設計最好規範,要不一改再改浪費時間。windows程式設計建議使用tchar
把char 轉換為wchar t
把 char 轉換為wchar t 用 stdlib.h 中的mbstowcs s 函式,可以通過下面的例子了解其用法 char cstr string to convert size t len strlen cstr 1 size t converted 0 wchar t wstr wstr ...
char與wchar t的區別
char與wchar t的區別 有的人愛用strcpy等標準ansi函式,有的人愛用 t x函式,有必要把來龍去脈搞清楚。為了搞清這些函式,就必須理請幾種字元型別的寫法。char就不用說了,先說一些wchar t。wchar t是unicode字元的資料型別,它實際定義在裡 typedef unsi...
char與wchar t的區別
有的人愛用strcpy等標準ansi函式,有的人愛用 t x函式,有必要把來龍去脈搞清楚。為了搞清這些函式,就必須理請幾種字元型別的寫法。char就不用說了,先說一些wchar t。wchar t是unicode字元的資料型別,它實際定義在裡 typedef unsigned short wchar...