wchar t 和 char 程式設計問題

2022-05-06 16:51:11 字數 891 閱讀 5260

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...