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么?

    后续再添加

  • 相关阅读:
    【CF722E】Research Rover
    【CF1519E】Off by One
    【CF1519D】Maximum Sum of Products
    【CF702F】T-Shirts
    【CF1364E】X-OR
    RPA应用场景-自动轮询汇总报表
    RPA应用场景-财务报表统计整合
    RPA应用场景-公积金贷款业务数据整合和报送
    RPA应用场景-信用卡交易争议后续流程
    RPA应用场景-日终清算操作
  • 原文地址:https://www.cnblogs.com/Stultz-Lee/p/6772638.html
Copyright © 2011-2022 走看看