我的程序 CMyftpDlg::UpLoad("D:\\文档\\本周工作总结.xls", "\\下载路径");
我的参数为路径,可若改为:
CMyftpDlg::UpLoad("D:\文档\本周工作总结.xls", "\下载路径");
在函数体中CString str=ServerPath; 显示 str 为乱码,而我用int pos=str.Replace("\\","\\\\")替换也不能实现,可用户只会输入“\”,我该怎么办呢;

解决方案 »

  1.   

    可我用 CMyftpDlg::UpLoad("D:\文档\本周工作总结.xls", "\下载路径");下载不了啊
      

  2.   

    我用参数("D:\文档\本周工作总结.xls", "\下载路径")传递到函数CString CMyftpDlg::DownLoad(CString ServerFile, CString LocalPath)中就出错,根本传递的值就不对
      

  3.   

    不会啊,我不知道你的程序是怎么工作的,我举个例子吧,比如,你为用户提供一个Edit对话框让用户输入下载文件的路径
    那么你可以这样做
    CString str;
    GetDlgItem(IDC_EDIT1)->GetWindowText(str);
    如果用户输入为D:\文档\本周工作总结.xls
    那么你得到的str实际内容应该是“D:\\文档\\本周工作总结.xls”,这个工作是系统为你做的,只有这样,用户输入的字串才可能显示"D:\文档\本周工作总结.xls"
    所以说没有必要自己转换阿,当然你说("D:\文档\本周工作总结.xls", "\下载路径")这样那肯定是错误的,肯定需要自己转换的,关键就是无论你从哪里得到用户的输入,实际都是系统给你转换过的啊,除非你直接调用你的函数,并且直接显式的传递参数,才会出现你所说的情况。
      

  4.   

    至于你说用str.Replace("\\","\\\\")来进行操作,当然不能成功了,因为\已经被当作转移字符用了,已经对字符进行了操作,\就已经不存在了,所以用Replace根本就找不到"\",更何谈替换他
      

  5.   

    回复人: badguy2002(风一样的男孩) ( ) 信誉:98  2004-04-29 10:43:00  得分:0 
     
     
      你理解错了,你看到用户只输入了“\”,其实系统已经转换成了"\\",否则是不可能显示“\“的
      
    ////////////////////////////////////////////////////////////////////////////
    他说的是对的,我遇到过同样的情况 
      

  6.   

    可我用 CMyftpDlg::UpLoad("D:\文档\本周工作总结.xls", "\下载路径");下载不了啊
    你自己的字符串和系统取得的字符串是否一样?可以用Debug跟踪一下看看。转义符在预处理的时候进行处理了,放到内存里就没有了。