路径中含有"\\"的意义是什么?

thinkperson_x201 2012-07-25 05:27:37
C:\Users\ggwang\AppData\Local\Temp\\Fit\

以上是我跟踪一段代码输出的路径,

不知道为什么会出现红色部分的双斜杠,

我在浏览器中打开这个路径,

提示不存在,


这样的路径我见过好几次,
不知道这样的含有“\\”的路径有什么特殊含义呢?
...全文
243 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Xomic 2012-07-31
  • 打赏
  • 举报
回复
不解,期待答案!学习...
Lactoferrin 2012-07-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 11 楼 的回复:

提醒如果是
\\?\或\\.\
开头的路径是有特殊意义的:
Windows NT: You can use paths longer than MAX_PATH characters by calling the wide (W) version of CreateFile and prepending "\\?\" to the path. The "\……
[/Quote]
你要看了源代码才知道,不过我猜想原因是这样
程序尝试往临时目录创建文件(或目录),于是有这样的代码
GetTempPath(&temppath)
CreateFile(temppath+"\\Fit");
它希望temppath得到C:\Users\ggwang\AppData\Local\Temp,然后加上\Fit便得到
C:\Users\ggwang\AppData\Local\Temp\Fit
但是GetTempPath提供的字符串的后面是加了\的,即temppath实际上是
C:\Users\ggwang\AppData\Local\Temp\
而程序员没注意到,于是自己又加了一个\
kingdom_0 2012-07-30
  • 打赏
  • 举报
回复
转义字符,用于输出某些特殊字符时使用.
wfq0987 2012-07-30
  • 打赏
  • 举报
回复
输出路径的程序可能是:C:\\Users\\ggwang\\AppData\\Local\\Temp\\\\Fit\\

ppsharp 2012-07-30
  • 打赏
  • 举报
回复
我不明就里,只知道用
thinkperson_x201 2012-07-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

提醒如果是
\\?\或\\.\
开头的路径是有特殊意义的:
Windows NT: You can use paths longer than MAX_PATH characters by calling the wide (W) version of CreateFile and prepending "\\?\" to the path. The "\\?\" tells the fu……
[/Quote]

这么多人回答,我看只有你说到点子上了,确实高人啊。

那你帮我分析一下我问题中的路径的意义到底是什么呢?
C:\Users\ggwang\AppData\Local\Temp\\Fit\
这是我在代码中打断点跟踪到的变量的值,可以肯定代码是没问题的。

我以前在windows下编译linux程序的时候(用VS2008)也遇到过这样的问题,
我当时就很奇怪,怎么会有这种路径,而这路径用浏览器打开显示不存在啊,
请高手帮我解答。
赵4老师 2012-07-26
  • 打赏
  • 举报
回复
提醒如果是
\\?\或\\.\
开头的路径是有特殊意义的:
Windows NT: You can use paths longer than MAX_PATH characters by calling the wide (W) version of CreateFile and prepending "\\?\" to the path. The "\\?\" tells the function to turn off path parsing. This lets you use paths that are nearly 32,000 Unicode characters long. However, each component in the path cannot be more than MAX_PATH characters long. You must use fully-qualified paths with this technique. This also works with UNC names. The "\\?\" is ignored as part of the path. For example, "\\?\C:\myworld\private" is seen as "C:\myworld\private", and "\\?\UNC\tom_1\hotstuff\coolapps" is seen as "\\tom_1\hotstuff\coolapps".

Windows NT: You can use the CreateFile function to open a disk drive or a partition on a disk drive. The function returns a handle to the disk device; that handle can be used with the DeviceIOControl function. The following requirements must be met in order for such a call to succeed:

The caller must have administrative privileges for the operation to succeed on a hard disk drive.
The lpFileName string should be of the form \\.\PHYSICALDRIVEx to open the hard disk x. Hard disk numbers start at zero. For example:
String Meaning
\\.\PHYSICALDRIVE2 Obtains a handle to the third physical drive on the user's computer.


The lpFileName string should be \\.\x: to open a floppy drive x or a partition x on a hard disk. For example:
String Meaning
\\.\A: Obtains a handle to drive A on the user's computer.
\\.\C: Obtains a handle to drive C on the user's computer.
linguangliang 2012-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
1、按照Windows的路径风格可以改成"C:\\Users\\ggwang\\AppData\\Local\\Temp\\Fit\\"这样;
2、按照Unix的路径风格可以改成"C:/Users/ggwang/AppData/Local/Temp/Fit/"这样。
[/Quote]
++
Corner 2012-07-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
引用 5 楼 的回复:

可能代码中写了\\\\……


对,代码中可能就是用了你的方式,
但代码为什么输出根本就不存在的C:\Users\ggwang\AppData\Local\Temp\\Fit\呢?

我说明一下:
C:\Users\ggwang\AppData\Local\Temp\\Fit\
是正确的写法,我没有笔误。
[/Quote]
不是说你有笔误,而是代码有误,输出时多了个\,反正只是作为输出没有什么影响,你要用这个路径的话把\\改成\就可以了。
thinkperson_x201 2012-07-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

可能代码中写了\\\\……
[/Quote]

对,代码中可能就是用了你的方式,
但代码为什么输出根本就不存在的C:\Users\ggwang\AppData\Local\Temp\\Fit\呢?

我说明一下:
C:\Users\ggwang\AppData\Local\Temp\\Fit\
是正确的写法,我没有笔误。
q2920 2012-07-25
  • 打赏
  • 举报
回复
这个学习了 这个困扰了我好久
pathuang68 2012-07-25
  • 打赏
  • 举报
回复
在代码中“\\”其实表示的就是一个"\",第一个是转义符,第二个才是真正的内容,主要是因为'\'这个字符比较特别,比如'\n'前面也有个'\',所以当需要输出真正的'\'时候,就需要'\\'这么写了。
jackyjkchen 2012-07-25
  • 打赏
  • 举报
回复
可能代码中写了\\\\……
zfk198687 2012-07-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
1、按照Windows的路径风格可以改成"C:\\Users\\ggwang\\AppData\\Local\\Temp\\Fit\\"这样;
2、按照Unix的路径风格可以改成"C:/Users/ggwang/AppData/Local/Temp/Fit/"这样。
[/Quote]
++,Windows和Linux的风格不一样,得注意一下。你的这个C:\Users\ggwang\AppData\Local\Temp\\Fit\
还真没见过。是不是解析错误呀?
Corner 2012-07-25
  • 打赏
  • 举报
回复
\\是\的转义字符,字符串里不能直接包含\,所以要用转义字符\\
比如文件路径是 C:\Users\ggwang\AppData\Local\Temp\Fit\
那么代码里就应该是

string path = "C:\\Users\\ggwang\\AppData\\Local\\Temp\\Fit";

你的这个应该是输出错误吧,多打了个\
图灵狗 2012-07-25
  • 打赏
  • 举报
回复
1、按照Windows的路径风格可以改成"C:\\Users\\ggwang\\AppData\\Local\\Temp\\Fit\\"这样;
2、按照Unix的路径风格可以改成"C:/Users/ggwang/AppData/Local/Temp/Fit/"这样。
tiankong_bear 2012-07-25
  • 打赏
  • 举报
回复
所有的\换成\\试试

64,646

社区成员

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

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