由于本人对MFC了解很少,菜鸟一枚,最近又要写一个文件对比小工具,所以此篇文章适合像我这种没怎么用过mfc的菜鸟。
昨天遇到了一个问题就是CString转换为char*失败,使用memncpy发现char数组中只显示第一个字符,上网搜了其他的转换方法,发现都是同样问题,后来在网上查到了原来字符集的问题,CString类对象GetBuffer()后,还是unicode编码,所以必须将宽字符转换成char类型,所以本人使用了下面的方法:
Unicode下CString转换为char *的方法:
int len = WideCharToMultiByte(CP_ACP,0,NewPath,NewPath.GetLength(),NULL,0,NULL,NULL);
char * szNewTemp = new char[len+1]; //以字节为单位
memset(szNewTemp, 0, sizeof(char)*(len+1));
WideCharToMultiByte(CP_ACP,0,NewPath,NewPath.GetLength(),szNewTemp,len,NULL,NULL);
szNewTemp[len] = '/0';
这样就将CString类型的NewPath成功转换成char*的szNewTemp。