我遇到了一个问题
我的实现函数是Edfile(char file[],char key,char cfile[]);
而我有一个CString filename;filename 是一个文件的路径名,怎样才能把filename用到Edfile( char file[],char key,char cfile[])里

解决方案 »

  1.   

    怎么样把filename 代替char file[]
      

  2.   

    char * pStr = fileName.GetBuffer();
    EDfile(...)
    fileName.ReleaseBuffer();
      

  3.   

    但是GetBuffer( int nMinBufLength )里有参数,如果里面我改为文件的长度,就出错了
      

  4.   

    不是文件的长度,而是文件名称的长度。比如:
    CString str;
    int len = str.GetLength();
    char* pChar = str.GetBuffer(len);
      

  5.   

    GetBuffer重载了,可以没有参数的,取所有值
      

  6.   

    Edfile(char file[],char key,char cfile[]);
    改为
    Edfile(LPCSTR file,char key,LPCSTR cfile);
    就可以直接传CString了
    Edfile(filename , ....)
      

  7.   

    但是GetBuffer( int nMinBufLength )里有参数,如果里面我改为文件的长度,就出错了对啊,你只能是引用它,如果用GetBuffer(0)得到它字符串的起始地址也只能够改它已有的空间,不能改变长度。CString是一个类,它还记录有字符串的长度等内容,它为字符串分配的空间也是变化的,所以不可能通修改它所指向的字符串的内容来改变其长度。
    但你可以把你修改后的值做为函数牛农对返回值再赋给CString就可以了。
      

  8.   

    我是这样做的
    CString filename是从一个Edit box控件(映射了一个变量CString m_path)的内容(内容为文件的路径)
    filename=m_path;//即得到了文件的完整路径名
    char *str=filename.GetBuffer(filename.GetLength());
    再用到EDfile(str,key,char cfile[])中时,我发现str的没有内容,是空的,根本就不能完成我的功能。应当要怎么办,才会使str里有内容
      

  9.   

    实在不行的话, CString str = "sdf";
    char *pChar = new char[str.GetLength()];
    memcpy(pChar,str,str.GetLength());总应该可以了吧。
      

  10.   

    我都不好意思再说了,还达不到我的目的
    为什么我这样却可以呢
    CString filename="d:\vc\m1.txt";
    char* str;
    str=(LPSTR)(LPCTSTR)filename;
    执行EDfile(str,key,char cfile[])就能得到我要的结果
    如果按下面
    CString filename是从一个Edit box控件(映射了一个变量CString m_path)的内容(内容为文件的路径)
    filename=m_path;//即得到了文件的完整路径名
    str=(LPSTR)(LPCTSTR)filename;
    执行EDfile(str,key,char cfile[])却不能得到我要的结果
      

  11.   

    把你调用EDfile前的str打印出来看看,
    是不是路径错误?
    还有d:\vc\m1.txt应该是d:\\vc\\m1.txt吧?
      

  12.   

    CString filename是从一个Edit box控件(映射了一个变量CString m_path)的内容(内容为文件的路径)
    filename=m_path;//即得到了文件的完整路径名
    str=(LPSTR)(LPCTSTR)filename;
    执行EDfile(str,key,char cfile[])却不能得到我要的结果
    你能确定,上述代码执行的时候filemane里面的内容就是和CEdit当中的内容一致吗?
    怀疑你没有UpdateData或者没有用GetDlgItem(idc_edit)->GetWindowText这样的方式得到真正的编辑控件内的字符串内容
      

  13.   

    CString strString;
    char *pStr;
     pStr = strString.GetBuffer( strString.GetLength());
       pStr .....
     strString.ReleaseBuffer();