也就是变成"D:\\Champion\\的形式abc.exe"

解决方案 »

  1.   

    报错:error C2065: 'replace' : undeclared identifier
      

  2.   

    static char BASED_CODE fliter[]="exe files(*.exe)|*.exe|all files(*.*)|*.*||";
     CFileDialog   dc(TRUE, "exe", NULL, NULL, fliter); 
     dc.m_ofn.lpstrTitle="files open";  // 打开框的名字
     if(dc.DoModal() == IDOK)
     {     
            m_subfunction_address = dc.GetPathName();
      }用打开文件的对话框,如上得到字符串的,m_subfunction_address就是
    "D:\Champion\abc.exe"的形式
      

  3.   

    m_subfunction_address.Replace("\", "\\");
    搞不定才怪!
      

  4.   

    你这问题比较奇怪
    "D:\Champion\abc.exe"存在哪儿?字符串吗?
    你要说出你这样转换的用途才能清楚
    Replace应该搞不定...
    因为CString str="D:\Champion\abc.exe";这样赋值后
    str中根本就找不到'\'这个字符
      

  5.   

    刚没看到你上面的回复...
    m_subfunction_address可以直接用啊~
    这时的m_subfunction_address
    相当于m_subfunction_address="D:\\Champion\\abc.exe"运行后的结果
      

  6.   

    用etboy327的方法报错:
    error C2039: 'replace' : is not a member of 'CString'shilong(银羽):的确如你说的,我只是想在ShellExecute()里用这一地址,ShellExecute()的确可以用这一直接返回的地址。
      

  7.   

    上边的帖子会把“\\”也替换掉的,变成“\\\\”。
    void Replace(CString& str)
    {
    int i = str.Find('\\'); while((i >= 0) && (i < str.GetLength()-1))
    {
    char c1 = str.GetAt(i-1), c2 = str.GetAt(i+1);
    if ((c1 != '\\') && (c2 != '\\'))
    {
    str.Insert( i, '\\');
    i++;
    }
    i = str.Find('\\', i+1);
    } if((str.Right(1) == '\\') && (str.Right(2) != "\\\\"))
    str += '\\';
             return;
    }
      

  8.   

    D:\Champion\abc.exe
    编译后就不是这个样子了。