日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

LPCWSTR和CString 轉(zhuǎn)換,在WideCharToMultiByte函數(shù)中應(yīng)用

 寂靜如河 2012-04-16

LPCWSTR是Unicode字符串指針,初始化時(shí)串有多大,申請(qǐng)空間就有多大,以后存儲(chǔ)若超過則出現(xiàn)無法

預(yù)料的結(jié)果,這是它與CString的不同之處。而CString是一個(gè)串類,它會(huì)自動(dòng)管理內(nèi)存空間。LPCWSTR初

始化如下:

    LPCWSTR Name=L"TestlpCwstr";

    由于LPCWSTR必須指向Unicode的字符串,問題的關(guān)鍵就變成了ANSI字符與Unicode字符之間的轉(zhuǎn)換

了,而ATL中轉(zhuǎn)換宏正好可以實(shí)現(xiàn):

    //方法一

    CString str=_T("TestStr");

    USES_CONVERSION;

    LPWSTR pwStr=new wchar_t[str.GetLength()+1];

    wcscpy(pwStr,T2W((LPCTSTR)str));

    //方法二

    CString str=_T("TestStr");

    USES_CONVERSION;

    LPWCSTR pwcStr=A2CW((LPCSTR)str);

    MFC中CString和LPSTR可通用,其中A2CW表示(LPCSTR)->(LPCWSTR),USES_CONVERSION 表示

用來定義一些中間變量,在使用ATL轉(zhuǎn)換宏之前必須定義該語(yǔ)句。

    此外,要將LPCWSTR轉(zhuǎn)換為CString,那就更容易,因?yàn)長(zhǎng)PCWSTR可以直接用來構(gòu)造CString,例如:

    LPCWSTR pcwStr=L"TestpwcStr";

    CString str(pcwStr);

    在<atlconv.h>頭文件中定義了ATL提供的所有轉(zhuǎn)換宏,如下:

    A2CW                                   (LPCSTR)->(LPCWSTR)

    A2W                                      (LPCSTR)->(LPWSTR)

    W2CA                                    (LPCWSTR)->(LPCSTR)

    W2A                                       (LPCWSTR)->(LPSTR)

其中各字母的含義如下:

2:為to的發(fā)音,表示“轉(zhuǎn)換為”的含義

A:為ANSI字符串,即MBCS

W和OLE:為寬字符串,即UNICODE

T:為中間類型。如果定義了_UNICODE,則T表示W(wǎng);如果定義了_MBCS,則T表示A

C:為const的縮寫

    利用這些宏,可以快速的進(jìn)行各種字符間的轉(zhuǎn)換。使用之前必須包含<atlconv.h>頭文件,并且聲明

USES_CONVERSION。使用ATL轉(zhuǎn)換宏,由于不用釋放臨時(shí)空間,所以使用起來非常方便。但考慮到棧空

間的尺寸(VC++默認(rèn)為2M),使用時(shí)需注意以下幾點(diǎn):

(1)只適用于進(jìn)行短字符串的轉(zhuǎn)換

(2)不要試圖在一個(gè)次數(shù)比較多的循環(huán)體內(nèi)進(jìn)行轉(zhuǎn)換

(3)不要試圖對(duì)字符型文件內(nèi)容進(jìn)行轉(zhuǎn)換,因?yàn)槲募叽缫话闱闆r下都比較大

(4)對(duì)于2和3兩種情況,應(yīng)該使用MultiByteToWideChar和WideCharToMultiByte函數(shù)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多