斜杠与反斜杠

时间:2021-11-27 02:18:24
斜杠,slash:/
反斜杠,backslash:\

在Unix中,文件系统用斜杠(slash,/)分割,比如/usr/bin,命令行选项用“-”表示,如命令“ls -a”列出所有文件。

由于网络首先是从Unix发展而来的,所以网址也用斜杠(slash,/)分割。但如果你在ie里输入http:\\hi.baidu.com\wpzhao,是一样能访问本空间的,这是因为ie对网址做了预处理,将反斜杠自动改成了斜杠,你可以在地址栏里看到修改后的结果,仍是http://hi.baidu.com/wpzhao。不过当你编程处理网络的时候就一定要用斜杠(slash,/)了,不信你先用 WinHttpConnect 连接hi.baidu.com,再用 WinHttpOpenRequest 打开请求“/wpzhao”,你可以得到本空间的html页面,而如果你用 WinHttpOpenRequest 打开请求“\wpzhao”,你将会得到一个错误的页面,类似“错误的url地址 。<br>页面将跳转到空间主页”等。

在Windows中,文件系统可以用斜杠(slash,/)或反斜杠(backslash,\)分割,二者均可,还可以混合使用,比如“C:\WINDOWS/system32”,编程时也是一样。但在DOS中,情况就不同了。DOS一律使用反斜杠(backslash,\)来分割文件系统,比如你在命令行下输入“cd c:/windows/system32”,即使用斜杠(slash,/),你会得到“The system cannot find the path specified.”的提示,而如果你输入“cd c:\windows\system32”,即使用反斜杠(backslash,\),就一切正常了。这正好和Unix相反,因为在DOS中,斜杠(slash,/)表示命令行参数,比如命令“dir /a”列出所有文件,注意Unix下是“-”。另外,在DOS中反斜杠(backslash,\)表示根目录,这和Unix相似,Unix使用斜杠(slash,/)来表示根目录,这样你就可以方便地“cd \”回到根目录。


另外使用反斜杠(backslash,\)须注意转义问题,比如编程时应该用c:\\windows\\system32而不是c:\windows\system32,C#里可以用@“c:\windows\system32”取消转义,C和C++里好像没有这个玩意儿。斜杠(slash,/)则没有转义问题。

又记:Windows路径操作API函数,如PathCombine等也只对反斜杠(backslash,\)有效,对斜杠(slash,/)无效,虽然它们都可用于Windows文件系统。估计这些函数也是从DOS发展而来的。


【转自:http://hi.baidu.com/wpzhao/item/a951a4bbc4c3d8f162388e9f】