靖harry

Talk is cheap,show me the code!

转义字符惹的鬼

1
阅读(1205)

转义字符惹的鬼

最近学习openCV,写了个小程序,大致就是将两幅图像进行混合。编译链接后生成可执行文件,之前在VS中运行还是可以的,直接点击exe文件运行,却发生了如下的错误:

错误是啥意思我也没看懂,不过还是马上察觉到哪里出了问题,代码中我读入图像数据用的是相对路径"1.png",而生成的exe文件与图像却不在同一级目录下,这才导致了错误的发生,于是改用绝对路径替换"H:\\Work_opencv\\Trackbar\\Trackbar_Project\\1.png",不料还是出现同样的错误:

这我就不明白了。网上查了一下,终于找到了问题所在,贴上原地址:http://blog.sina.com.cn/s/blog_76e896d90102vnoy.html 。原来,这都是C/C++中转义字符弄的鬼。先来回顾一下转义字符的基础知识。

在计算机中,有一批特殊形式的不可打印字符、单引号、双引号、反斜杠、回车退格等,需要用转义系列表示。例如printf函数使用的\n就是一种以“\”开头的字符序列,代表换行的意思。这种非显示字符难以用一般形式的字符表示,所以C语言规定用“\”开头的字符其后跟随的字符用另外的意思代替,“\”及其后有特殊意义的字符序列称作转义字符。常见转义字符如下:


这样就能解释错误的原因了:由于”\“为转义字符,与其后紧跟的字符表示其它的意思,所以单个”\“并没有被解释成表示路径的正斜杠。要想表示”\“,根据上图,应该使用”\\“才行。

经过实验:"H:\\Work_opencv\\Trackbar\\Trackbar_Project\\1.png"

运行正常,证明方法可行。这样的小细节要多注意。