这个函数的参数,该怎么转换类型(从CString 到char*)

WriteBinaryFile(__in char* szFilePath, __in char* byteSet);(这个函数在dll里)
第一个是当前程序目录,CString path,我用GetModuleFileName(NULL,szPATH.GetBufferSetLength(MAX_PATH),MAX_PATH);取的。

第二个是写入的内容,从文本框里取内容赋值给控件关联变量m_txt,类型为CString。
类型和函数的参数不同,

我试着用WideCharToMultiByte转成char*。但最后总是出错,运行总是出错。
这两个该怎么传参呢?能给个例子吗?

而且,转完的变量不能传参,要直接写(比如第一个参数直接写成”C:\t.txt")才能传进去
用我转完的变量传进去的只是空值(一串0)

估计是转换错了吧, 要怎么转?


波斯汪
浏览 1131回答 3
3回答

芜湖不芜

可以用 GetModuleFileNameA  和 GetWindowTextA 来直接得到 char* 的字符串。或者用ATL宏:WriteBinaryFile(CT2A((LPCTSTR)path)),CT2A((LPCTSTR)m_txt));

蝴蝶不菲

csring 有个成员函数getbufferCString str = "aaaaa";char* p = str.getbuffer();

MMTTMM

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 }
打开App,查看更多内容
随时随地看视频慕课网APP