none
关于CString数组的问题 RRS feed

  • 问题

  • 我定义了一个函数:
    CString* CSetupDlg::FindFile(CString filename, CString filedir)
    {
         CString array_strPath[MAX_PATH];
        //其他语句就是为array_strpath数组进行赋值
        return array_strPath;
    }

    然后我定义了一个
    CString array_filepath[MAX_PATH];
     array_filepath=FindFile(findfile_name,findfile_dir);
    但编译报错,说是类型不匹配
    我修改成
    CString *array_filepath=FindFile(findfile_name,findfile_dir);
    编译通过,但是messagebox(*array_filepath)得到的确实不正确的值
    我怎么才能得到正确的FindFile函数的返回值呢


    阿荣
    2009年3月2日 6:14

答案

  •   我第一个方法已经是数组方式了.
    CString reValue参数就是代表array_filepath.之后你可以访问其它中的MAX_PATH大小数组.

    reValue[0]=_T("1");
    reValue[1]=_T("2");
    .....
    =
    array_filepath[0]
    array_filepath[1]
    ......
    2009年3月2日 8:25

全部回复

  • 这个函数的返回值方法不对.不能返回局部变量的指针.
    如果你要使用数组则可以这样写:
    void CSetupDlg::FindFile(CString filename, CString filedir, CString reValue[])
    {
    reValue[0]=_T("1");
    }
    调用:
    CString array_filepath[MAX_PATH];
    FindFile(findfile_name,findfile_dir,array_filepath);
    MessageBox(array_filepath[0]);
    //--------------------------
    但我怀疑你是需要字符:
    CString CSetupDlg::FindFile(CString filename, CString filedir)
    {
    CString str;
    str=_T("1");
    return str;
    }
    调用:
    CString array_filepath;
    array_filepath = FindFile(findfile_name,findfile_dir);
    MessageBox(array_filepath);

    2009年3月2日 7:56
  • 非常感谢楼上的热心答复
    我是个新手,所以很多问题呵呵。
    看到你的答复后,我找了相关资料,理解了函数不能返回局部变量的指针问题。
    但是我的函数需要返回的是一个CSTRING类型的数组,有很多cstring字符串
    不知道改如何定义


    阿荣
    2009年3月2日 8:05
  •   我第一个方法已经是数组方式了.
    CString reValue参数就是代表array_filepath.之后你可以访问其它中的MAX_PATH大小数组.

    reValue[0]=_T("1");
    reValue[1]=_T("2");
    .....
    =
    array_filepath[0]
    array_filepath[1]
    ......
    2009年3月2日 8:25
  • 非常感谢!
    阿荣
    2009年3月2日 8:27