zoukankan      html  css  js  c++  java
  • 正斜杠 与反斜杠之争

    在linux 和windows平台上编程时,我们常常遇到正斜杠 / 和 反斜杠 ,这两个很 眨眼的 符号,那么二者有哪些区别呢?本文将重点讲讲二者的差异

    正斜杠 / 翻译为 slash ;而反斜杠 为backslash ,有人 用汉字的 来分别区分二者,确实如此,汉语本来就博大精深。

    在unix类平台上,我们使用 slash 即正斜杠来分隔一个个的目录名称,比如“usr/lib/”,而使用backslash 即反斜杠来表示转义标识 ,而因为C语言与unix的天然亲密关系,所以在C语言里,如果是给linux编程,我们基本无需操心正反斜杠的问题。

    但是,作为世界占有率第一的桌面系统,号称有最好的开发环境之称的windows平台,使用了反斜杠来分隔目录,别出心载固然值得赞美,但是哗众取宠就是你的不对了。因此,我们在编码时经常看到这样的字符串,“E:\mydir1\dir2”,是的,看起来还可以接受,但是如果是这样呢"E:\pro my\dir2",越发奇怪了,这里要表示的路径是因为有个文件名称为pro my,如果这里的中间没有 那么window会认为这里到pro就结束了,这在程序运行时 ,就会出现没有该文件存在的告警了。

    为何呢,还是因为 反斜杠的本质工作 其实就是转义标识的,但是window的早期设计者 让它在其平台的 又充当了目录分隔符的责任,责任越大,问题就越多。为了让编译器知道本反斜杠不是作为转义使用的 ,必须在反斜杠前面再加一个反斜杠,所以,在window字符串中\才是真正意义上的目录分隔符。

    无语归无语,但是 作为历史遗留问题,后人在一边骂前window设计者傻逼的同时,我们还是要默默忍受这种折磨。

    下面问题来了,如果 一个window下的字符串"E:01-sourceckme",通过网络传输给了一个linux系统,linux系统怎么知道这里的 是转义还是目录分隔符呢,请允许我蒙逼一会。

    因此,请明确,请在window下先做一件事情,如果是分隔符,请写成这样再传输"E:\001-source\bck\me",下面的问题就又来了,怎么将原字符串中的 换成\ 呢?

    在VC里,我们可以直接调用CString的成员函数,比如:

    CString str_path = "E:01-sourceckme";
    str_path.Replace("\","\\");
    

    那么,作为pure C 主义者,我们能实现一个这样的Replace么?

    后续再添加

  • 相关阅读:
    显示文件本地文件夹
    Select Dependencies选择依赖项
    搜索小技巧
    783. Minimum Distance Between BST Nodes BST节点之间的最小距离
    5. Longest Palindromic Substring 最长的回文子串
    12. Integer to Roman 整数转罗马数字
    3. Longest Substring Without Repeating Characters 最长的子串不重复字符
    539. Minimum Time Difference 最小时差
    43. Multiply Strings 字符串相乘
    445. Add Two Numbers II 两个数字相加2
  • 原文地址:https://www.cnblogs.com/Stultz-Lee/p/6772638.html
Copyright © 2011-2022 走看看