我的程序 CMyftpDlg::UpLoad("D:\\文档\\本周工作总结.xls", "\\下载路径");
我的参数为路径,可若改为:
CMyftpDlg::UpLoad("D:\文档\本周工作总结.xls", "\下载路径");
在函数体中CString str=ServerPath; 显示 str 为乱码,而我用int pos=str.Replace("\\","\\\\")替换也不能实现,可用户只会输入“\”,我该怎么办呢;
我的参数为路径,可若改为:
CMyftpDlg::UpLoad("D:\文档\本周工作总结.xls", "\下载路径");
在函数体中CString str=ServerPath; 显示 str 为乱码,而我用int pos=str.Replace("\\","\\\\")替换也不能实现,可用户只会输入“\”,我该怎么办呢;
那么你可以这样做
CString str;
GetDlgItem(IDC_EDIT1)->GetWindowText(str);
如果用户输入为D:\文档\本周工作总结.xls
那么你得到的str实际内容应该是“D:\\文档\\本周工作总结.xls”,这个工作是系统为你做的,只有这样,用户输入的字串才可能显示"D:\文档\本周工作总结.xls"
所以说没有必要自己转换阿,当然你说("D:\文档\本周工作总结.xls", "\下载路径")这样那肯定是错误的,肯定需要自己转换的,关键就是无论你从哪里得到用户的输入,实际都是系统给你转换过的啊,除非你直接调用你的函数,并且直接显式的传递参数,才会出现你所说的情况。
你理解错了,你看到用户只输入了“\”,其实系统已经转换成了"\\",否则是不可能显示“\“的
////////////////////////////////////////////////////////////////////////////
他说的是对的,我遇到过同样的情况
你自己的字符串和系统取得的字符串是否一样?可以用Debug跟踪一下看看。转义符在预处理的时候进行处理了,放到内存里就没有了。