VS-c++ warning[C4129]

本文讲述了在使用OpenCV读取Windows系统图片时遇到的[C4129]错误,重点在于理解反斜杠在路径中的角色,包括浏览器地址、Windows文件系统、HTML URL和程序字符串中的正确使用。解决方法涉及转义字符和路径分隔符的选择:在Windows系统中使用反斜杠,而在网络路径和URL中则使用斜杠。
摘要由CSDN通过智能技术生成

一. 问题

使用OpenCV打开图片时报错。

Mat mat=imread("D:\HHH.jpg");

报错为[C4129]

二. 解决

官方文档 [C4129]
“character”:无法识别的字符转义序列
字符 character 或字符串常量中的 () 反序列无法识别为有效的转义序列。 将忽略反杠,不会打印。 将打印反杠后的字符。
若要打印单个反杠,请指定双反 (\) 。

即再转义一下就好了,对了,地址符为\还是/有一定讲究的。

Mat mat=imread("D:\\HHH.jpg");

三. 参考博客

Unix使用斜杆/ 作为路径分隔符,而web应用最新使用在Unix系统上面,所以目前所有的网络地址都采用 斜杆/ 作为分隔符。

Windows由于使用 斜杆/ 作为DOS命令提示符的参数标志了,为了不混淆,所以采用 反斜杠\ 作为路径分隔符。所以目前windows系统上的文件浏览器都是用 反斜杠\ 作为路径分隔符。随着发展,DOS系统已经被淘汰了,命令提示符也用的很少,斜杆和反斜杠在大多数情况下可以互换,没有影响。

知道这个背景后,可以总结一下结论:
(1)浏览器地址栏网址使用 斜杆/ ;
(2)windows文件浏览器上使用 反斜杠\ ;
(3)出现在html url() 属性中的路径,指定的路径是网络路径,所以必须用 斜杆/
(4)出现在普通字符串中的路径,如果代表的是windows文件路径,则使用斜杆/和反斜杠\是一样的;如果代表的是网络文件路径,则必须使用 斜杆/ ;
(5)windows系统的地址栏能够识别单反斜杠"“,而不能识别双反斜杠”\",这是系统文件系统自身的约定。所以F:\Office\Trunk__Out\ProDebug\Bin\OfficeInfo.dll这样是不正确的。
(6)而在程序中,字符串中的“\”主要是为了转义,“\”转义后被理解为“\”,“\”才能够被操作系统文件系统所理解,比如用字符串表示上述路径:“F:\Office\Trunk\__Out\Pro Debug\Bin\OfficeIn可以fo.dll”,同理,如果想要表示“\”,可以写作“\\”。
(7) 在不同系统的情况下, windows下是 \ ,linux和unix下是/。但是由于 \ 也是转义字符的起始字符,所以,路径中的 \ 通常需要使用 \ \进行转义 。如C中文件操作,c:\kkk\dd.txt 和 c:/kkk/dd.txt一样。

“./”:代表目前所在的目录
“…/”:代表上一层目录
\ 用于本地
/ 用于网络连接地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值