问题描述
我现在在修改别人的项目,他之前开发都是默认支持unicode的,因为文件多,我就接着用了unicode。在做一个弹出对话框,选文件打开文件时出现了转换错误。如下:CStringstrSavePath;CFileDialogdlg(false,TEXT("*.xls"),NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,TEXT("WorksheetFiles(*.xls)|*.xls||"));if(dlg.DoModal()==IDOK){strSavePath=dlg.GetPathName();}else{return;}FILE*fp=fopen(strSavePath,"w+b");//报错,参数1不能转换为constchar*后来我就改成了:FILE*fp=fopen(strSavePath.GetBuffer(strSavePath.GetLength()+1),"w+b");//报错,参数1不能从wchar_t*转换成constchar*我后来用了charstr[1000];memcpy(str,strSavePath)//还是不行,还说不能从wchar_t转成char.现在问题是:fopen函数需要用到constchar*变量,而现在生成的strSavePath都是unicode的,该怎么转换?谢谢了请大家给出的答案也能保证支持汉字目录的选择呀
解决方案
解决方案二:
解决方案三:
FILE*fp=_wfopen(strSavePath,_T("w+b"));
解决方案四:
FILE*fp=_wfopen(strSavePath,_T("w+b"));凡是字符串str1="aa";都要变成str1=_T("aa");参数也是一样
解决方案五:
FILE*fp=fopen((LPCSTR)(LPCTSTR)strSavePath,"w+b");