UNICODE 程式設計入門(3)

2021-08-29 07:00:15 字數 2091 閱讀 7881

下面的這個例子使用 win32 api 函式和通用資料型別設定 c 盤的卷標。

//******************

// 設定 c 盤的卷標

//******************

// drvsvl.cpp

#include

#include

void main()

通過使用 tchar 資料型別,將這段**最上面的字元陣列宣告為兩個位元組的字元。text 巨集再次被用於字串常量:

void main()

visual c++中的通用資料型別

visual c++

提供了幾種 mfc 專用的資料型別用於建立具有國際化特性的應用程式。這些定義很通用,完全可以在 unicode、ascii、dbcs (雙位元組字符集) 和 mbcs (多位元組字符集)。由於篇幅所限,本文不打算涉及所有上面提到的這些字符集。有關它們的詳細資料請參考相關資料。mfc 提供了一種透明的方式來實現這些字符集。通用資料型別的對映到哪個字符集以及對映方式是根據工程的設定決定的,預設值為 ascii 模式,其它幾個可選項是 mbcs、dbcs 或者 unicode。本文主要討論 unicode,所以下表中只列出了 ascii 與 unicode 字元之間的對映關係:

表一:

通用 mfc 資料型別

對映到 ascii

對映到 unicode

注釋

_tchar

char

wchar_t

_tchar

是乙個對映巨集,當定義 unicode 時,該資料型別對映到 wchar_t,如果沒有定義 unicode,那麼它對映到 char。

_t 或 _text

char

常量字串

wchar_t

常量字串

功能與巨集相同,在 ascii 模式下,它們被忽略,也就是說被預處理器刪除掉,但是如果定義了unicode, 則它們會將常量字串轉換成等價的 unicode 。

lptstr

char*, lpstr(win32)

wchar_t*

可移植的32位字串指標。它將字元型別對映到工程設定的型別。

lpctstr

const char*, lpcstr(win32)

const wchar_t*

可移植的32位常量字串指標。它將字元型別常量對映到工程設定的型別。

使用表一中列出的通用資料型別,開發人員可以保證所建立的工程始終是針對一種字符集,這些通用資料型別就相當於佔位符,在編譯時被特定的位元組所替代,使得應用程式在 ascii 和 unicode 模式下都能執行。但是,有一點要特別注意,那就是上述的通用資料型別為微軟專有,與 ansi 標準並不相容。有關微軟提供的這些通用資料型別詳細描述請參考 msdn 庫文件。

有關技術注釋

為了成功編譯支援 unicode 的 mfc 程式,必須使用 mfc 的 unicode 版本庫。該庫在定製安裝visual c++ 時是個可選安裝項。

有一點很重要:那就是不使用 unicode 標準在外觀上並不影響程式的執行。也就是說,上面提到過的**不管設沒設定 _unicode 生成選項,最終都能生成正常執行的程式。當開發人員使用多個版本的win32 api函式時才會出現問題。

在使用多個版本的 win32 api函式(任何有字元或字串作為引數的 win32 api函式)時,編譯器根據是否設定 _unicode 指令來決定呼叫正確的函式。如果沒有定義_unicode,那麼編譯器將預設呼叫 ascii 版本函式。

結束語

綜上所述可以看到,編譯 unicode 版本的程式並不難。只是在編寫**時記住函式呼叫上些微的變化。微軟為此提供的擴充套件是開發人員能夠以透明的方式選擇所用的字符集,為應用軟體的國際化開啟了方便之門。

jeffrey richter 在他的《windows 核心程式設計》(機械工業出版社-王建華、張煥生、侯麗坤等譯)一書中專門用一章討論了 unicode。翻譯得也不錯。有興趣的朋友不妨找來看看。

Windows 程式設計入門(一) Unicode

by wjb date 2018 08 03 本質上,unicode 使用16位數表示字元。unicode字符集很大,它可以支援世界上很多國家的語言文字或其他符號。在 c 中,我們用寬字元型別 wchar t 來表示 unicode 字元。在 32 和 64 位windows 中,wchar t 都...

Unicode程式設計

網上找了一篇關於unicode程式設計設定方面的文件,感覺不錯,收藏了 1。unicod程式設計 新增uafxcw.lib檔案 乙個是debug版本的庫,乙個是release版本的庫uafxcw.lib 1 在project settings的link中加入uafxcw.lib 2 pragma c...

Unicode程式設計

1.windows 定義的unicode 資料型別有哪些?資料型別 說明 wchar unicode字元 源自系統巨集定義typedef wchar t wchar pwstr 指向unicode字串的指標 pcwstr 指向乙個恆定的unicode字串的指標 對應的ansi資料型別為char,lp...