如何在UNICODE 下CString 轉char*? |
尚未結案
|
tai721014
一般會員 發表:19 回覆:12 積分:6 註冊:2008-07-02 發送簡訊給我 |
我的環境是UNICODE,因為需要多國語言的字串
然後我用SearchTreeForFile()函數 在中間我將CString 先轉為char* 因為 SearchTreeForFile()的參數是要PSTR 但當我CString 字串是 "小畫家.lnk"餵入我在網路上找到的程式碼後 吐出來的是 "小畫家. !#$#$"後面部分是亂碼 所以我再將這個餵到SearchTreeForFile()函數中就找不到這個檔案 請問要怎麼去handle這種UNICODE的字串轉換啊? 以下是我的程式碼 下面是我在網路上找到的code [code cpp] char* CString2Str(CString& str) { char* ret; TCHAR* tmp; int len = str.GetLength(); tmp = new TCHAR[len 1]; ret = new char[len 1]; memset(ret, 0, len 1); memcpy(tmp, str.GetBuffer(), len*sizeof(TCHAR)); str.ReleaseBuffer(); tmp[len] = 0; #ifdef UNICODE WideCharToMultiByte(CP_ACP, NULL, tmp, len, ret, len 1, NULL, NULL); #else strcpy(ret, (char*)tmp); #endif delete tmp; return ret; } [/code] [code cpp] 請在此區域輸入程式碼 [/code] 這邊是我做的程式 [code cpp] strToken=strToken L".lnk";//加副檔名 char *pPath=(char *)malloc(MAX_PATH); char *pToken=CString2Str(strToken) ; BOOL bIsFound=SearchTreeForFile(pStartPoint,pToken,pPath); [/code] |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
你好,
strToken=strToken L".lnk";//加副檔名 char *pPath=(char *)malloc(MAX_PATH); ::strcpy(pToken, CString2Str(strToken) ); //char *pToken=CString2Str(strToken) ; BOOL bIsFound=SearchTreeForFile(pStartPoint,pToken,pPath); 註: 這裡是 c builder 的c 語言,建議以後po在其他語言 ===================引 用 tai721014 文 章=================== 這邊是我做的程式 [code cpp] strToken=strToken L".lnk";//加副檔名 char *pPath=(char *)malloc(MAX_PATH); char *pToken=CString2Str(strToken) ; BOOL bIsFound=SearchTreeForFile(pStartPoint,pToken,pPath); [/code]
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2011-05-19 23:09:20, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |