首页 新闻 会员 周边

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

0
[已解决问题] 解决于 2016-06-27 23:20

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)

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

谢谢

C++
还没有的主页 还没有 | 小虾三级 | 园豆:531
提问于:2013-02-13 22:29
< >
分享
最佳答案
0

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

或者用ATL宏:

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

奖励园豆:5
Launcher | 高人七级 |园豆:45045 | 2013-02-16 09:13
其他回答(2)
0

csring 有个成员函数getbuffer

CString str = "aaaaa";

char* p = str.getbuffer();

风小手 | 园豆:248 (菜鸟二级) | 2013-04-03 16:02
0
 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 }
沉没之鱼 | 园豆:188 (初学一级) | 2013-06-09 13:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册