日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换【转】

發布時間:2025/3/12 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换【转】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CString與LPCWSTR、LPSTR、char*、LPWSTR等類型的轉換

VC++ 2010-09-25 21:23:12 閱讀457 評論3 ??字號:?訂閱

一.CString與LPCWSTR?

??? 兩者的不同:LPCWSTR 是Unicode字符串指針,初始化時串有多大,申請空間就有多大,以后存貯若超過則出現無法預料的結果,這是它與CString的不同之處。而CString是一個串類,內存空間類會自動管理。

??? CString轉換成LPCWSTR

????方法一:CString strFileName;

???????????????????? LPCWSTR lpcwStr = strFileName.AllocSysString();

??? 方法二:CString str=_T("TestStr");?
??????????????????? USES_CONVERSION;?
??????????????????? LPCWSTR lpcwStr = A2CW((LPCSTR)str);

??? MFC中CString和LPSTR是可以通用,其中A2CW表示(LPCSTR)? -> (LPCWSTR),USER_CONVERSION表示用來定義一些中間變量,在使用ATL的轉換宏之前必須定義該語句。

??? LPCWSTR轉換成CString

??? LPCWSTR lpcwStr = L"TestWStr";?
??? CString str(lpcwStr);

?CString str;

LPWSTR? lpstr = (LPWSTR)(LPCWSTR)str;

二.CString與LPSTR轉換

???? CString轉換成LPSTR:

??? 方法一:CString strFileName;

????????????????????LPSTR lpStr = strFileName.GetBuffer();

??????????????????? strFileName.ReleaseBuffer();

???? 方法二:CString strFileName;

?????????????????????LPSTR lpStr = (LPSTR)(LPCSTR)strFimeName;

??????LPSTR轉換成CString:

????????????????????? LPSTR lpStr = L"TestStr";?
????????????????????? CString str(lpStr);

????? 注意:CString和LPCSTR可直接轉換,如下:

???????????????????? CString str;

?????????????????????LPCSTR lpcStr = (LPCSTR)str;

三.CString和char*轉換
?????? CString轉換成char*
?????? 方法一:CString str;
???????????????????????char* p = str.GetBuffer();
?????? 方法二:CString str;
???????????????????????char* p = (LPSTR)(LPCSTR)str;
???????char*轉換成CString
?????????????????????? char* p = "test";
???????????????????????CString str = ("%s",p);

四.String和int、float的轉換

??????? 可以使用atoi,atof,atol等函數來完成。

五.LPSTR(char*)和LPWSTR的轉換

????????可以使用下面的ATL宏來進行,最好是將變量定義成TCHAR、LPTSTR等T類型,可以避免轉換。

ATL宏介紹:

???? A2BSTR???OLE2A???????????? T2A????????????W2A?
???? A2COLE?? OLE2BSTR??? T2BSTR??? W2BSTR?
???? A2CT???????? OLE2CA???????? T2CA????????? W2CA?
???? A2CW??????? OLE2CT???????? T2COLE??? W2COLE?
???? A2OLE?????? OLE2CW?????? T2CW???????? W2CT?
???? A2T????????????OLE2T??????????? T2OLE??????? W2OLE?
???? A2W?????????? OLE2W???????? ?T2W???????????? W2T

??? A :ANSI 字符串,也就是 MBCS。?
??? W、OLE 寬字符串,也就是 UNICODE。?
??? T 中間類型T。如果定義了 _UNICODE,則T表示W;如果定義了 _MBCS,則T表示A?
??? C const 的縮寫

利用這些宏,可以快速的進行各種字符間的轉換。使用前必須包含頭文件,并且申明USER_CONVERSION;使用 ATL 轉換宏,由于不用釋放臨時空間,所以使用起來非常方便。但是考慮到棧空間的尺寸(VC 默認2M),使用時要注意幾點:

??? 1、只適合于進行短字符串的轉換;?
??? 2、不要試圖在一個次數比較多的循環體內進行轉換;?
??? 3、不要試圖對字符型文件內容進行轉換,因為文件尺寸一般情況下是比較大的;?
??? 4、對情況 2 和 3,要使用 MultiByteToWideChar() 和 WideCharToMultiByte();

void Func1(LPSTR lpStr);

void Func2(LPWSTR lpwStr);

TCHAR?? name[256];

TCHAR*?? pName = new? TCHAR[256];

Func1(name); // Func1(pName);

Func2(name); // Func2(pName);

注意在VS2005中上面用紅色標記的代碼已經不成立。

VS2005中CString已經改為寬字符型,一些轉換如下:

char name[10];
?TCHAR sex[5] ;
?char *p = name;
?TCHAR *pw = sex;

?LPSTR lpstr = name;
?LPCSTR lpcstr = name;
?lpcstr = lpstr;
?
?lpstr = p;
?p = (char*)sex;
?pw = (WCHAR*)name;
?LPWSTR lpwstr = (LPWSTR)lpstr;
?lpwstr = (LPWSTR)lpcstr;
?LPCWSTR lpcwstr = (LPCWSTR)lpstr;
?lpcwstr = (LPCWSTR)name;

?CString str(lpstr);
?CString str1(lpcstr);
?CString str2(lpwstr);
?CString str3(lpcwstr);
?CString str4(name);
?CString str5(sex);

?lpwstr = (LPWSTR)(LPCWSTR)str;
?lpstr = (LPSTR)(LPCWSTR)str;
?lpcstr = (LPCSTR)(LPCWSTR)str;

?p = (char*)str.GetBuffer();
?pw = str.GetBuffer();

可以看出轉換更加簡單了,基本上可以直接轉換,A2W等宏基本上不需要啦

總結

以上是生活随笔為你收集整理的CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换【转】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩久久中文字幕 | 无码精品在线视频 | 精品中文字幕在线观看 | 看黄色一级 | 老熟妇仑乱一区二区av | 婷婷精品一区二区三区 | 手机在线一区二区 | mm视频在线观看 | 少妇高潮一区二区三区四区 | 91色影院| 国精产品一区一区三区 | 成人在线免费播放视频 | 毛片3| 国产va在线观看 | 欧美视频一区二区三区在线观看 | av黄在线 | 国产v亚洲| 浪潮av一区二区三区 | 朝桐光一区二区三区 | 大地资源在线观看免费高清版粤语 | 中文久久字幕 | 国产精品精华液网站 | 华人永久免费 | 色综合av在线 | 国产伦精品一区二区三区视频孕妇 | 69网站在线观看 | av噜噜色| 欧美jizz19性欧美 | 中国毛片网 | 久久成人精品 | 国产精品地址 | 91免费影片 | 久久夜色精品亚洲 | 国内国产精品天干天干 | 爆操av | 毛片毛片 | a免费视频 | 疯狂伦交 | 96日本xxxxxⅹxxx17 | 成人黄色免费观看 | 欧美二级片 | 中文字幕啪啪 | a免费在线观看 | 亚洲欧美第一 | 韩国三级hd中文字幕的背景音乐 | 亲嘴扒胸摸屁股免费视频日本网站 | 欧美一线天 | 亚洲精品久久久久久久久久久久久 | 色戒av | 国产综合无码一区二区色蜜蜜 | 印度午夜性春猛xxx交 | 国产原创在线视频 | 调教一区二区 | 大学生一级片 | 中文字幕欧美人妻精品 | 国产成年人视频网站 | 少妇高潮av久久久久久 | bbbbbxxxxx性欧美 | 久久成人国产精品 | 韩国av一区二区 | 性网爆门事件集合av | 国产精品区一区二区三 | 综合色影院 | 素人女裸体| 按摩害羞主妇中文字幕 | 高清av不卡 | 人妻视频一区二区三区 | 色欲av无码一区二区三区 | 91久久国语露脸精品国产高跟 | 成年人免费观看网站 | 日韩视频免费观看高清 | 欧美一区视频 | free性护士vidos猛交 | 一级黄色片大全 | 亚洲天堂avav| 亚洲精品国产熟女久久久 | 97在线免费观看视频 | 免费成人黄色网 | 日韩精品极品视频在线观看免费 | 激情超碰| 美女视频黄色在线观看 | 永久在线观看 | 国产精品久久91 | 亚洲综合成人亚洲 | 日韩福利片 | 国产精品一区二区av日韩在线 | 麻豆tube| www.xxx在线观看 | 激情涩涩 | 97超碰97| 日韩中文字幕一区二区三区四区 | 华人色 | 欧美性猛交7777777 | 熟女少妇在线视频播放 | 无遮挡边吃摸边吃奶边做 | 国产精品第100页 | 美国一级大黄一片免费中文 | 邻居少妇张开双腿让我爽一夜 | 精品一区二区免费 |