问题是:为什么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#中明显得到了相同的结果
答案 0 :(得分:3)
反斜杠在适用时充当转义运算符。 \ D不是转义码,所以bash似乎正好通过它。 \&#34;是一个转义码。为了达到你想要的输出,你应该写:
Program.exe "C:\\Dir\\"
答案 1 :(得分:1)
cmd
中的命令行转义非常疯狂。空格,管道字符等使用插入符号^
进行转义。引号使用反斜杠进行转义:\
。字面意思是直接在引号之前的反斜杠。
我不知道是否有办法用反斜杠结束引用的参数。也许加倍反斜杠可能会有所帮助。一些消息来源还建议^\
避免这种反斜杠。