在C++中对于函数参数的调用是支持函数重载的,该问题所在原因则是:
read_image参数表里,第2个参数是const char*类型,而默认dlg.GetPathName()返回的数据类型是CString类型
在UNICODE字符集里面,这两种是没法直接转换的,所以构不成函数重载。
解决方案:
1.由于操作系统是基于UNICODE版本的,建议还是使用转换函数进行转换;
转换函数:
- void Wchar2Char(WCHAR* pSrc,char* pDes)
- {
- int nLen = wcslen(pSrc) + 1;
- WideCharToMultiByte(CP_ACP,0,pSrc,nLen,pDes,2 * nLen,NULL,NULL);
- }
复制代码 该函数实现从宽字节编码到多字节编码的转换。
调用函数功能为:
- CString strPath=_T("C:\\User");
- char *chTemp;
- chTemp=new char[512];
- memset(chTemp,0x00,512);
- Wchar2Char(strPath.GetBuffer(),chTemp);
复制代码 转换完成后chTemp则是需要的char*数据类型了。
2.在工程属性里面将工程字符集选项选择为使用多字节字符集模式即可。
(不推荐这种方式,因为操作系统会反复进行编码转换)
|