话说QT中的双引号
有些情况下,我们需要用QT来调用外部程序来进行操作,调用cmd也是很常见的。
在cmd中的命令,拿到qt里用winshell执行,怎么就报错了呢?往往是引号配对导致的。今天我就来简单说说引号的情况。
比如cmd中,有如下一段命令,将对缓存文件处理的分析结果存入记事本:
为神马要带引号?!
因为在cmd的环境里,空格是分割命令和参数的标识,cmd认这个。可我们的ProgramFiles路径名称很不巧,带了空格,为了防止cmd把他当作由空格分隔的命令和参数,就用引号将这这个路径用引号包裹,告诉cmd“我就是一个整体,你休想把我分两半”!
当然,避免空格的话,也有很多方法,比如下边,使用了一种长路径的别名,用~1把空格给屏蔽了,但还依然能正常访问这个合法的路径。路径没有了空格,也就不需要引号包裹,不错吧。
下面我们就将其这段命令移植到winshell中,让其调其cmd,为我们执行这段命令。
你看,路径里竟然出现了两个引号并排的情况!别急,这叫转义,用一个引号将其后的引号“转变了意义”。之所以要转变意义,是因为这个路径两端的引号是给cmd看的,到winshell的地盘后,这个引号就变成了winshell后边参数的内容了。既然是内容,就不能与winshell参数外包裹的引号重复,不然,都是一个双引号,会引起歧义。所以就以双代单。
这就是两个引号产生的原因。
当然,如果如下写法,就不需要了:
Sigma撰写
http://t.qq.com/duxing
话说QT中的双引号
有些情况下,我们需要用QT来调用外部程序来进行操作,调用cmd也是很常见的。
在cmd中的命令,拿到qt里用winshell执行,怎么就报错了呢?往往是引号配对导致的。今天我就来简单说说引号的情况。
比如cmd中,有如下一段命令,将对缓存文件处理的分析结果存入记事本:
为神马要带引号?!
因为在cmd的环境里,空格是分割命令和参数的标识,cmd认这个。可我们的ProgramFiles路径名称很不巧,带了空格,为了防止cmd把他当作由空格分隔的命令和参数,就用引号将这这个路径用引号包裹,告诉cmd“我就是一个整体,你休想把我分两半”!
当然,避免空格的话,也有很多方法,比如下边,使用了一种长路径的别名,用~1把空格给屏蔽了,但还依然能正常访问这个合法的路径。路径没有了空格,也就不需要引号包裹,不错吧。
下面我们就将其这段命令移植到winshell中,让其调其cmd,为我们执行这段命令。
你看,路径里竟然出现了两个引号并排的情况!别急,这叫转义,用一个引号将其后的引号“转变了意义”。之所以要转变意义,是因为这个路径两端的引号是给cmd看的,到winshell的地盘后,这个引号就变成了winshell后边参数的内容了。既然是内容,就不能与winshell参数外包裹的引号重复,不然,都是一个双引号,会引起歧义。所以就以双代单。
这就是两个引号产生的原因。
当然,如果如下写法,就不需要了:
Sigma撰写
http://t.qq.com/duxing