要输入数据,用fopen,但是出错,不知道怎么改,请教各位
FILE *in;
FilePathName=dlg.GetPathName();
in=fopen(FilePathName,"r");
显示error C2664: 'fopen' : cannot convert parameter 1 from 'CString' to 'const char *'
char a[300];
fscanf(in,"%s",a);
CString str=a;
显示error C2440: 'initializing' : cannot convert from 'char [300]' to 'ATL::CStringT<BaseType,StringTraits>'
怎么修改啊,急

解决方案 »

  1.   

    CString::GetBuffer
    CString str(a);
    CString::Format
      

  2.   

    是否工程为unicode? 要用unicode对应的函数,或者不要用unicode
      

  3.   

    估计是用了 UNICODE 的工程
    把 FilePathName 转换成 ansi 的就可以用 fopen 了
      

  4.   

    混合C函数和C++类,总是很麻烦,自找麻烦,用API的CreateFile/ReadFile不就行了?当然,关键是类型转换,这样试试:
    in = fopen((LPCTSTR)FilePathName, "r"); 
    如果还有问题,就是编码问题,那就需要进行编码转换,不能强制类型转换。
      

  5.   

    是CString型
    怎么使CString改变为char
      

  6.   

    改用_tfopen/_wfopen吧fopen有相应的宽字符版本_wfopen
      

  7.   

    他们的用法和fopen一样吗
      

  8.   

    到底怎样改使使CString改变为char
      

  9.   

       in=fopen((LPCSTR)FilePathName,"r"); 
       刚试了可以的。
       str的这个调用CString的format 方法。