导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

替换字符串中反斜杠"\"

zt840328 2009-08-31 11:43:56
我用BROWSEINFO获得了我想选中的一个路径,并把这个路径显示在了一个文本框里面,我要用这个路径来保存文件的话就需要把文本框里面的字符串里的反斜杠“\”替换成双反斜杠“\\”。在论坛里面搜了一些文章,说用s.Replace("\\","\\\\"),但是我在运行程序的时候出错了,然后监视,发现执行完了s=s.Replace("\\","\\\\");一句话之后,s变成了""这么一个怪东西,不知道是因为什么,请高手指点,我的程序大概如下:
void CMyDlg::OnButton1()
{
CString sFolderPath;
BROWSEINFO bi;
char Buffer[MAX_PATH];
bi.hwndOwner = NULL;
bi.pidlRoot =NULL;
bi.pszDisplayName = Buffer;
bi.lpszTitle = "修改接收路径";
//bi.ulFlags = BIF_BROWSEINCLUDEFILES;
bi.ulFlags = BIF_EDITBOX;
bi.lpfn = NULL;
bi.iImage=IDR_MAINFRAME;
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);
if(pIDList)
{
SHGetPathFromIDList(pIDList, Buffer);
sFolderPath = Buffer;
}
LPMALLOC lpMalloc;
if(FAILED(SHGetMalloc(&lpMalloc))) return;
lpMalloc->Free(pIDList);
lpMalloc->Release();
SetDlgItemText(IDC_SOURCE_DIR,sFolderPath);
}

void CMyDlg::OnButton2()
{
CString s;
GetDlgItemText(IDC_SOURCE_DIR,s);
s=s.Replace("\\","\\\\");
FILE *f;
CString name;
name=s+"\\1.txt";
f=fopen(name,"w");
fprintf(f,"%s",s);
}
...全文
780 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuhudie203 2009-08-31
不要从Edit框得到 把sFolderPath拿来保存 understand?
回复
zt840328 2009-08-31
直接用GetDlgItemText(IDC_SOURCE_DIR,s); 得到的字符串不行,我试过的
回复
那样的话就跟楼两位大大说的一样了....直接用吧.....其实这种问题多试试很好解决的吧.....
回复
哦错了....不是说看到....如果看到的话程序里应该已经转过来了....
应该是用到....
回复
GetDlgItemText(IDC_SOURCE_DIR,s); 如果这里看到的是单斜杠那么你在用Replace时本来就找不到单斜杠.....本身在程序里单斜杠就是转义用的.....
回复
yuhudie203 2009-08-31
直接保存啊 不用替换
回复
youyifang 2009-08-31
不替换就可以达到你的要求吧?
回复
zt840328 2009-08-31

yuhudie203,谢谢!
回复
wu_qing_yun 2009-08-31
干嘛要替换? 不替换简单得多,能达到你的要求
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……