VC中的Unicode編程

來源:互聯網
上載者:User

 

VC中的Unicode編程

    在windows下編程還是支援unicode吧,大勢所趨啊,window 2k以後的系統底層都是基於Unicode的,就算你調用ANSI的API(以A結尾比如SetWidowsTextA),系統也會在你的進程預設堆上動態分配一塊記憶體,存放轉換後的Unicode字串,然後把轉換後的字串傳遞給API,如果調用了傳回值為ANSI字串的API,Windows會在後台進行相反的轉換,多浪費時間啊!!就算不考慮效率問題,難道你不想讓你的軟體國際化嗎?你還想面臨半個漢字等尷尬的問題嗎?

    其實VC中進行Unicode編程也不麻煩,大概如下:
1.為工程添加UNICODE和_UNICODE預先處理選項,在VC.net中就是 項目 -> 屬性 -> c/c++ -> 前置處理器 在"預先處理定義"中加入這兩個宏定義(vc6中 project -> settings -> c/c++ -> general 中的 Preprocessor definitions).

2.Include <TCHAR.h>(一般在stdafx.h中)然後把所有使用char*定義變數的地方換為LPTSTR/TCHAR*或LPCTSTR/const TCHAR*(對應於const char*).

3.把所有的字串常量用_T()宏包起來,比如 TCHAR* szText = _T("我的Text");

4.所有的C庫字串操作函數也做相應的替換,比如
strlen ->_tcslen
strcat ->_tcscat
strcmp ->_tcscmp
......
    注意,這些函數中的"文本長度"均為字元個數,而非char個數具體參看MSDN.

5.API調用一般不用做特殊處理,當定義了UNICODE和_UNICODE後,所有的API都會被宏指向W結尾的版本(不定義則指向A結尾的版本).

    其實,上面所說的並非強制你使用UNICODE,如果你還想回去使用ANSI,沒有問題,把第一步定義的兩個宏拿掉就OK了,繼續我們的ANSI編程!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.