我通過(guò)cedit1.GetWindowTextW(str);得到CString型的str; 可是無(wú)法將str轉(zhuǎn)化成char *的, 版上看到的那些方法(getbuffer,sprintf,(LPSTR)(LPCTSTR)..)都會(huì)出錯(cuò) 還有可以通過(guò)cedit1.getline()方法,得到LPTSTR str. 怎么轉(zhuǎn)化成char *的呢? ☆──────────────────────────────────────☆ kewpie (烤火爐的香山芋) 于 2006年11月21日22:45:23 星期二) 提到: CStringW strW; cedit.GetWindowTextW(strW); CStringA strA(strW); // 讓CStringA的構(gòu)造函數(shù)自動(dòng)轉(zhuǎn)換 或者 用一些將寬字轉(zhuǎn)換為單字的函數(shù)或宏,比如 1、宏W2A 2、輔助類(lèi)CW2A 3、WideCharToMultiByte 轉(zhuǎn)成CStringA后就可以直接轉(zhuǎn)化為 char* p = (char*)strA.GetString(); ☆──────────────────────────────────────☆ blueskyeyes (陌上年少★唯楚有才) 于 2006年11月22日00:36:10 星期三 提到: 謝謝,已搞定 也可以char * p= const_cast<char*>((LPCSTR)strA) 如果要用CStringA ,這時(shí)候project里需要設(shè)置使用多字節(jié)字符集 ☆──────────────────────────────────────☆ enjoysoft (Enjoy — 享受生活) 于 2006年11月22日12:20:26 星期三 提到: 這個(gè)做法是不正確的!strA返回給你的是一個(gè)const,不知道什么時(shí)候這里就不是原來(lái)那 個(gè)string了,因?yàn)檫@個(gè)指針受cstring控制,不受你的控制。人家返回一個(gè)只讀的,硬要 保留一個(gè)可讀寫(xiě)的,不是很危險(xiǎn)嗎? 如果工程是多字節(jié)的,CString就是CStringA kewpie的是正解,你也可以使用一個(gè)const char*來(lái)訪問(wèn)字符串。如果你要修改字符串的 話,最好自己分配一個(gè),然后strcpy CString str; ... char *p = new char[str.GetLength]; strcpy(p, str); ... delete []p; ☆──────────────────────────────────────☆ blueskyeyes (陌上年少★唯楚有才) 于 2006年11月22日12:24:57 星期三 提到: 呵呵,謝謝你。我改了 ☆──────────────────────────────────────☆ blueskyeyes (陌上年少★唯楚有才) 于 2006年11月22日16:50:47 星期三 提到: 現(xiàn)在的問(wèn)題,如果要用CStringA,那么必須設(shè)置成使用 多字節(jié)字符集,這時(shí)候CString的使用會(huì)出現(xiàn)一些莫名其妙的錯(cuò)誤 而使用unicode字符集的話,不會(huì)出現(xiàn)錯(cuò)誤。 如果設(shè)置成使用unicode字符集, CString str; cedit1.GetWindowText(str) strcpy(p,str)事,會(huì)提示CString無(wú)法轉(zhuǎn)化成char *. 怎么在使用unicode字符集的前提下,將CString轉(zhuǎn)化成char *呢 望賜教 ☆──────────────────────────────────────☆ blueskyeyes (陌上年少★唯楚有才) 于 2006年11月22日18:39:15 星期三 提到: 在創(chuàng)建project時(shí),如果不用默認(rèn)的unicode字符集,就沒(méi)什么問(wèn)題了 ☆──────────────────────────────────────☆ enjoysoft (Enjoy — 享受生活) 于 2006年11月22日21:47:15 星期三) 提到: CString str(_T("Hello")); // 隨便設(shè)置成Unicode與否 // Convert a TCHAR string to a LPCSTR CT2CA pszAnsiString (str); // 然后再 strcpy(p,pszAnsiString); 看一下MFC/ATL的字符轉(zhuǎn)換類(lèi)CT2CA之類(lèi)的
|