反斜杠和最终报价

时间:2014-06-20 22:12:40

标签: c++ c windows

问题是:为什么argv参数中的最终反斜杠被解释为escape-backslash,而不是反斜杠'\\'本身代码:

#include <iostream>
int main(int argc, char **argv)
{
    if (NumArgs > 1)
        std::cout << pArgsArray[1] << std::endl;
    return 0;
}

Program.exe "C:\Dir\"

预期输出:C:\Dir

实际输出C:\Dir"

那么为什么最后的反斜杠不被解释为as-is像背板?

我们在C#中明显得到了相同的结果

2 个答案:

答案 0 :(得分:3)

反斜杠在适用时充当转义运算符。 \ D不是转义码,所以bash似乎正好通过它。 \&#34;是一个转义码。为了达到你想要的输出,你应该写:

Program.exe "C:\\Dir\\"

答案 1 :(得分:1)

cmd中的命令行转义非常疯狂。空格,管道字符等使用插入符号^进行转义。引号使用反斜杠进行转义:\。字面意思是直接在引号之前的反斜杠。

我不知道是否有办法用反斜杠结束引用的参数。也许加倍反斜杠可能会有所帮助。一些消息来源还建议^\避免这种反斜杠。