CString字符串怎样把一个路径的‘\’变为'\\'

bazzi2011 2012-03-09 12:57:13
从一个INI文件中读取一个保存文件的文件夹的路径,然后调用遍历函数BrowseFile将文件夹下的文件名字全找到并添加到一个ListBox中。现在的问题是,用读出来的地址不能够遍历文件夹成功,而直接将地址作为参数调用却能够遍历文件夹成功。

1.读INI文件并调用BrowseFile

::GetPrivateProfileString("文件1", "保存地址", "Error", m_strSavePath.GetBuffer(100), 100,
strPath + "\\SaveFile.ini");

BrowseFile(m_strSavePath);



虽然BrowseFile的参数显示的地址正确,但调用却不成功。而如果直接把它的地址作参数调用则可以成功。
BrowseFile("E:\\Server\\Debug\\File"); 这样调用可以成功。
所以可以确定问题是出在了路径的格式上面,即m_strSavePath获取的是单‘\’的地址,而我直接调用
CString的Replace函数想将'\'替换成‘\\’,却不能够获得正确的结果。请问问题到底出在了哪里???


m_strSaveRecPath.Replace("\\", "\\\\"); //将单斜杠替换为双斜杠


====================
下面是遍历文件夹函数

void CDlg::BrowseFile(CString strDir)
{
CFileFind ff;

BOOL bFound = ff.FindFile(strDir + "\\*.*");//先根据路径判断查找的文件(或文件夹)是否存在

while(bFound)
{//若为TRUE,则查找下一个文件
bFound = ff.FindNextFile();

if(!ff.IsDirectory() && !ff.IsDots())
{//如果目标不是文件夹且不是一个默认(缺省)文件夹目录,证明这是一个文件,可对它进行处理
CString sFilePath = ff.GetFilePath(); //先获得当前文件的路径

((CListBox*)GetDlgItem(LIST_FILE))->InsertString(0, sFilePath); //将其添加到ListBox控件中
((CListBox*)GetDlgItem(LIST_FILE))->SetCurSel(0);
}

}

ff.Close();
}

...全文
2124 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bazzi2011 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jiao319 的回复:]
将m_strSavePath用字符数组替换
char strSavePath[100] = {0};
[/Quote]

就是这个原因,换成char数组就行了,谢谢,帮大忙了!
Eleven 2012-03-09
  • 打赏
  • 举报
回复
应该是不需要转换的
Jiao319 2012-03-09
  • 打赏
  • 举报
回复
将m_strSavePath用字符数组替换
char strSavePath[100] = {0};
clear251 2012-03-09
  • 打赏
  • 举报
回复
3楼正确,在调试窗口看到的是“E:\Server\Debug\File",实际变量存储的是“E:\\Server\\Debug\\File”,不需要转换的。
yanyuchonglou 2012-03-09
  • 打赏
  • 举报
回复
"\"是转义的,应该是出在这里。
龙哥依旧 2012-03-09
  • 打赏
  • 举报
回复
你自己写的“E:\\Server\\Debug\\File”和从文件里读出来的“E:\Server\Debug\File”是一样的
调试确定一下!
不存在你说的还得“变为”一下!
bazzi2011 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zero_226 的回复:]
可以用/.
replace没有理由不成功啊,你replace之后把那个CString打印出来,看时replace失败了,还是别的地方失败了。
[/Quote]

具体怎么用'/.' ???
这样???
m_strSaveRecPath.Replace("/.", "\\\\");
zero_226 2012-03-09
  • 打赏
  • 举报
回复
可以用/.
replace没有理由不成功啊,你replace之后把那个CString打印出来,看时replace失败了,还是别的地方失败了。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧