[問題] Unicode環境下讀取unicode文件

看板C_and_CPP (C/C++)作者 (小可)時間14年前 (2012/03/09 10:22), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
小弟我MFC環境設定的字源集必須是:使用Unicode字源集 讀取的檔案是unicode (如果讀的是ANSI,字源集不是設定Unicode就顯示正常) 程式想要讀取:<value>要顯示的字</value> 把Static Texe改成 "要顯示的字"然後用MessageBox顯示出來 結果Static Texe沒改,訊息也沒跑出來 以下是我寫的,請問該改哪裡才對呢? void CMy123Dlg::OnBnClickedOk() { CStdioFile stf; CString strLine; CString strTitle, strData; stf.Open(_T("abc.txt"), CFile::modeRead); while(stf.ReadString(strLine)) { if(strLine.Find(_T("<value>")) >= 0){ strData = strLine.Mid(strLine.Find(_T("<value>"))+7, strLine.GetLength()-strLine.Find(_T("<value>"))-15); if(strData!=""){ SetDlgItemText(IDC_PAY_ACCOUNT, strData); MessageBox(strData, _T("訊息"), MB_ICONASTERISK | MB_OK); } } } stf.Close(); } 感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.105.178 ※ 編輯: corn911090 來自: 60.248.105.178 (03/09 10:23)

03/09 12:11, , 1F
是不是少了個</value> 多了個<value> ? 雖然我不懂VB
03/09 12:11, 1F

03/09 12:11, , 2F
但是看起來沒對稱-.-~
03/09 12:11, 2F

03/09 13:10, , 3F
Mid第二個參數是取幾個位元的資料 所以全長減(7*2+1)
03/09 13:10, 3F
如果我在strData = (................一長串) 的下一行加了.. DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, strData, -1, NULL, 0); wchar_t *pwText; pwText = new wchar_t[dwNum]; if(!pwText) { dlete []pwText; } MultiByteToWideChar (CP_ACP, 0, strData, -1, pwText, dwNum); delete []pwText; 在MultiByteToWideChar那兩行會跑出 [無法將參數 3 從 'CString' 轉換成 'LPCSTR'] 請問要怎麼改呢? ※ 編輯: corn911090 來自: 60.248.105.178 (03/09 14:50)

03/09 15:38, , 4F
strData.GetBuffer(0)
03/09 15:38, 4F
文章代碼(AID): #1FMMc1T5 (C_and_CPP)
文章代碼(AID): #1FMMc1T5 (C_and_CPP)