談ATL(一)--說說ATL字符串轉換類

你們在使用ATL技術作項目時,必定發現了很是麻煩的字符串字符集問題,下面把經常使用點和重點記錄羅列一下,以備查。編程

 

ATL提供了許多字符串轉換函數,若是編譯選項使得源和目的的字符類型相同,那麼這些類不執行任何轉換,關於設置系統編譯項的問題前面windows編程的文章中已經介紹過。若是要使用ATL的字符轉換類,那麼必需要包含<atlconv.h>文件,轉換的具體方式均是經過宏定義(宏函數)來完成,爲了更好的列出這些宏函數及明確其功能,須要先說明一下都有哪些字符串類型以及他們的縮寫形式:windows

 

T表示一個指向Win32的TCHAR字符的指針----一個LPTSTR參數。ide

W表示一個指向Unicode的wchar_t字符的指針----一個LPWSTR參數。函數

A表示一個指向MBCS/ANSI的char字符的指針----一個LPSTR參數。操作系統

OLE表示一個指向COM OLECHAR字符的指針----一個LPOLESTR參數。指針

C表示C/C++的const修飾符。code

 

全部宏函數的名稱都採用統一的「<源格式縮寫>2<目標縮寫>」形式,其中「2」取其英文讀音「TO」,即,從源到目標。好比,A2W就是把LPSTR轉換爲LPWSTR,若是名稱中含有C,就表明const,好比,T2CW就是把LPTSTR轉爲LPCWSTR。下面列出ATL的字符轉換宏列表接口

 

A2W      OLE2T     T2CA      T2W     W2T字符串

A2WEX    OLE2TEX   T2CAEX    T2WEX   W2TEXit

A2T      OLE2CT    T2OLE     T2CW    W2CT

A2TEX    OLE2CTEX  T2OLEEX   T2CWEX  W2CTEX

A2CT     T2A       T2COLE    W2A

A2CTEX   T2AEX     T2COLEEX  W2AEX

 

 

須要特殊說明的字符集是OLECHAR,在Unicode的狀況下,OLE等同於W,例如:COLE2T和CW2T是等同的。

這與OLECHAR的定義是分不開的,在win16的windows操做系統上,OLECHAR是由包含ANSI字符的標準C數據類型char用typedef定義獲得的,而在win32的系統上,則是由wchar_t數據類型用typedef定義獲得的。由於OLECHAR的自適應性,一般,把全部的COM接口字符串參數定義爲OLECHAR*類型。

相關文章
相關標籤/搜索