WriteBinaryFile(__in char* szFilePath, __in char* byteSet);(這個(gè)函數(shù)在dll里)第一個(gè)是當(dāng)前程序目錄,CString path,我用GetModuleFileName(NULL,szPATH.GetBufferSetLength(MAX_PATH),MAX_PATH);取的。第二個(gè)是寫入的內(nèi)容,從文本框里取內(nèi)容賦值給控件關(guān)聯(lián)變量m_txt,類型為CString。類型和函數(shù)的參數(shù)不同,我試著用WideCharToMultiByte轉(zhuǎn)成char*。但最后總是出錯(cuò),運(yùn)行總是出錯(cuò)。這兩個(gè)該怎么傳參呢?能給個(gè)例子嗎?而且,轉(zhuǎn)完的變量不能傳參,要直接寫(比如第一個(gè)參數(shù)直接寫成”C:\t.txt")才能傳進(jìn)去用我轉(zhuǎn)完的變量傳進(jìn)去的只是空值(一串0)估計(jì)是轉(zhuǎn)換錯(cuò)了吧, 要怎么轉(zhuǎn)?
3 回答

蕪湖不蕪
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
可以用 GetModuleFileNameA 和 GetWindowTextA 來直接得到 char* 的字符串。
或者用ATL宏:
WriteBinaryFile(CT2A((LPCTSTR)path)),CT2A((LPCTSTR)m_txt));

蝴蝶不菲
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
csring 有個(gè)成員函數(shù)getbuffer
CString str = "aaaaa";
char* p = str.getbuffer();

MMTTMM
TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
1 const char * CString2charPtr(CString &str) 2 { 3 int len = str.GetLength()*2; 4 char *pc = new char[len+1]; 5 WideCharToMultiByte(CP_ACP,0, str.GetBuffer(), -1, pc, MAX_PATH, NULL, NULL); 6 7 pc[len] = '\0'; 8 str.ReleaseBuffer(); 9 10 return pc; 11 }
- 3 回答
- 0 關(guān)注
- 1158 瀏覽
添加回答
舉報(bào)
0/150
提交
取消