一般文件都是通过文件打开对话框获得的,文件路径是CSTring类型。有些人比较钟爱C语言的File格式,因此希望使用fopen函数,而该函数的第一个参数(文件路径)是char *类型的,故没法直接使用cstring类型。如果将cstring转成char *貌似也不行,因为cstring中隐藏了一些特殊字符的转义,如‘/’,这样在转换后的char *里没法识别文件路径。本人尝试通过在每个‘/’之后再添加一个'/',然而由于文件路径中有中文字符,处理起来比较麻烦,没有成功~最后通过以下方法完美解决:
使用 _tfopen函数
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("All Files (*.*)|*.*||"),NULL);
CString str;
if(dlg.DoModal() == IDOK)
str=dlg.GetPathName();
else
return;
File *fp= _tfopen(str,_T("r")));
纠结了一天多,总算解决~~