Mac/Windows系统中 C++获取路径的方法(混乱的正反斜杠)

Windows系统

windows系统文件分隔符是:“ \ "

路径获取方法:右键 → 属性 → 得到文件路径

获取到的文件路径是这样的:C:\hello\file.txt (相对路径)

C++中,\\表示的是一个转义字符,他表示 \ ,

所以在Windows系统下用C++来获取文件路径的方法有两种:

CString filename=Path("C:\\hello\\file.txt ");(注意这里要把斜杠都转为双斜杆)

CStringfilename=Path("C:/hello/file.txt"); 

转义字符

所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如换行(\n),回车(\r),等,就称为转义字符。

通俗讲:输出字符串时,如果想输出一个换行,那就要加上'\n'这个标志,类似的,输出一个TAB,就加上'\t',也就是说,反斜杠("\")这个符号会把跟在它后面的字符结合起来转义成其它字符。根据这个原理,如果想输出双引号('"'),就需要输入'\"',这样才会将包含了双引号的字符串正确的写入内存中。那么如果想输入一个反斜杠呢?很简单,只要敲'\\'就可以了。 

由此,如果"C:\\hello\file.txt"这个路径字符串交给C编译器编译,实际写入内存的字符串并没有包含反斜杠"\",甚至紧跟在反斜杠后面的' f '字母也一起被转义成了其它的字符,因此在C语言中获取路径需要将系统文件分隔符手动改为双斜杠 \\  

常见转义字符:

\a响铃(BEL)007
\b退格(BS)008
\f换页(FF)012
\n换行(LF)010
\v垂直制表(VT)011
\r回车(CR)013
\t水平制表(HT)009
\\反斜杠092
\?问号字符063
\'单引号字符039

字符串解析不仅仅局限于C编译器,Java编译器、一些配置文件的解析、Web服务器等等,都会遇到对字符串进行解析的这个问题,由于传统的Windows采用的是单个斜杠的路径分隔形式,导致在对文件路径进行解析的时候可能发生不必要的错误,所以就出现了用双反斜杠"\\"分隔路径的形式。不管解析引擎是否将反斜杠解析成转义字符,最终在内存中得到的都是"\",从而避免了错误的发生。

 


Mac 、Linux、Unix系统

mac/linux/unix系统到文件分隔符是:“ / ”

获取文件路径到方法:command+空格 →  输入ter → 将文件拖入到终端中 → 自动显示路径

获取到的文件路径是这样的:/Users/dong/Desktop/smarthome/Taylor

在Mac系统下用C++来获取文件路径的方法:

CString filename=Path("/Users/dong/Desktop/smarthome/Taylor");

相对于Windows而言,Mac/Linux系统显得完整周到的许多,用正斜杠" \ "作为路径分割的方法,若文件名中包含空格,可以直接在空格前加上反斜杠" \ "进行转义,从而很好的和命令参数区别出来(因为参数之间一般使用空格分隔)

Unix系统下:

进入hutaow yuan目录(注意有空格)

cd hutaow\ yuan (需要输入\来对空格进行转义)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小半、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值