[問題] 如何把wstring轉成LPCTSTR?

看板C_and_CPP (C/C++)作者 (小可)時間14年前 (2012/03/13 17:03), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
我是用Visual C++ 2005 (MFC) 想請問一下..有個變數Value wstring Value = Field.subval(_T("value")); 把某個Static改成Value的值 SetDlgItemText(IDC_PAY_NAME, Field2Value); 會有錯誤訊息: 無法將參數 2 從 'std::wstring' 轉換成 'LPCTSTR' 上網查發現是要轉成寬字節(Unicode)的關係 於是中間加了... int len=MultiByteToWideChar(CP_ACP,0,Field2Value.c_str(),Field2Value.size(),NULL,0); TCHAR *buffer=new TCHAR[len+1]; //多字節編碼轉換成寬字節編碼 MultiByteToWideChar(CP_ACP,0,Field2Value.c_str(),Field2Value.size(),buffer,len); buffer[len]='\0';//添加字符串結尾 //刪除緩衝區並返回值 wstring return_value; SetDlgItemText(IDC_PAY_NAME, return_value); 在那兩個函數還是有錯誤訊息 無法將參數 3 從 'const wchar_t *' 轉換成 'LPCSTR' 請問這要怎麼改呢? 感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.105.178

03/13 17:35, , 1F
wchar*->char* 用WideCharToMultiByte
03/13 17:35, 1F

03/13 17:36, , 2F
char*->wchar*才是MultiByteToWideChar
03/13 17:36, 2F

03/13 17:38, , 3F
感謝一樓的幫忙,我知道怎麼改了! 加上.c_str()就好了!
03/13 17:38, 3F

03/13 17:38, , 4F
SetDlgItemText(IDC_PAY_NAME, Field2Value.c_str());
03/13 17:38, 4F

03/13 17:38, , 5F
也就是原本的那兩行程式碼就ok了
03/13 17:38, 5F
文章代碼(AID): #1FNmrzTK (C_and_CPP)
文章代碼(AID): #1FNmrzTK (C_and_CPP)