C++中 "\" 符号识别问题(急)

三文鱼也会飞 2006-02-11 02:54:56
在VC++环境中,我用以下两个函数
SHBrowseForFolderA();
SHGetPathFromIDList();
得到了被选择文件夹的路径:E:\Samples\set_lpmcr
但是CreateProcess();函数却只识别 E:\\Samples\\set_lpmcr 这种形式.

我开始想将E:\Samples\set_lpmcr赋值给一个链表,然后在每一个"\"符号的后面再加一个"\"
但是指针遇到"\"符号的时候却直接跳过了.输出的链表内容为:E:Samplesset_lpmcr

看来是编译器不识别"\"符号.

怎样将 E:\Samples\set_lpmcr 这种形式转化为 E:\\Samples\\set_lpmcr 这种形式呢?
请问各位有没有什么好方法?谢谢各位了.



...全文
1122 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
blue_rat 2006-02-11
  • 打赏
  • 举报
回复
可以用PathStripPath
E:\cda\BBS\target -----> target
三文鱼也会飞 2006-02-11
  • 打赏
  • 举报
回复
对了,还有
SHBrowseForFolderA();
SHGetPathFromIDList();

我现在得到了路径.E:\cda\BBS\target

但通过两个函数怎样直接得到所选择的文件夹(target)的名字呀?

三文鱼也会飞 2006-02-11
  • 打赏
  • 举报
回复
哦,原来是这样呀!12日我结帖,
谢谢你们.
对了,给你们一个礼物.
http://www.52xx.com/2/bf/zy/190.htm
kinglytt 2006-02-11
  • 打赏
  • 举报
回复
好人做到底,如果你是没搞清转移符的话,我来给你说说。
在c/c++中,有很多特殊符号要处理,如何在源程序中输入呢?c/c++提供了转移符机制。
即一个\再加上规定的字符,表示某特殊字符。比如'\n'表示换行,'\r'表示回车等。如果要输入\字符本身怎么办呢?语言规定,'\\'代表\字符。
注意,转移符是在源程序中用的,不要把运行时的内存中字符串和它混淆。
当你在源程序中输入"E:\\Samples\\set_lpmcr"的时候,c/c++会自动理解为E:\Samples\set_lpmcr,运行后,内存中的值也是E:\Samples\set_lpmcr。

对于你的情况讲,
你通过硬编码在源程序中输入路径时,需要写'\\'
但SHBrowseForFolderA();SHGetPathFromIDList();函数得到的路径,在内存中表示为E:\Samples\set_lpmcr,和你在源程序中输入"E:\\Samples\\set_lpmcr"是等价的。
因此,CreateProcess();应该是直接调用上面函数的值就可以了。
kinglytt 2006-02-11
  • 打赏
  • 举报
回复
你的意思是要在字符'\\'后再加一个'\\'吧?
如果是没弄清转义符的话,上面的代码就白写了。
kinglytt 2006-02-11
  • 打赏
  • 举报
回复
用stl的string可以很方便的解决啊。
下面是我写的代码,已经测试过了。

string a = "E:\\Samples\\set_lpmcr";
string::size_type start = 0, pos = 0;

while ((pos = a.find("\\", start)) != -1)
{
a.insert(pos, "\\");
start = pos + 2;
}
ikiki 2006-02-11
  • 打赏
  • 举报
回复
搞错没有 \ 是转义,\\ 编译时自然被转义为 \

65,202

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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