为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
波斯汪 2018-11-11 13:13:05
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)估计是转换错了吧, 要怎么转?
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

可以用 GetModuleFileNameA  和 GetWindowTextA 来直接得到 char* 的字符串。

或者用ATL宏:

WriteBinaryFile(CT2A((LPCTSTR)path)),CT2A((LPCTSTR)m_txt));


查看完整回答
反对 回复 2018-11-15
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

csring 有个成员函数getbuffer

CString str = "aaaaa";

char* p = str.getbuffer();


查看完整回答
反对 回复 2018-11-15
?
MMTTMM

TA贡献1869条经验 获得超4个赞


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 }


查看完整回答
反对 回复 2018-11-15
  • 3 回答
  • 0 关注
  • 1129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信