gpt4 book ai didi

c++ - 如何以与 VBScript 相同的方式解析命令行

转载 作者:行者123 更新时间:2023-11-27 22:35:52 26 4
gpt4 key购买 nike

我有一个简单的 C++ 程序,列出了它获得的参数:

#include <iostream>

int main(int argc, char* argv[]) {
for (int i = 1; i < argc; i++) {
std::cout << argv[i] << std::endl;
}
return 0;
}

我只是在测试/解决这个问题,但最终目的是让它接受一些文件和目录的名称。

所以我将这些参数传递给它:

"\\server\directory\file.ext" "C:\trailing\backslash\" "file.txt"

但这是打印的内容:

\\server\directory\file.ext 
C:\trailing\backslash" file.txt

即第二个参数的尾部斜线让它认为结束引号被转义了。

我在 VS2017 的属性页中设置参数,但在以下情况下我得到相同的输出:

  • 我从 PowerShell 调用 exe。
  • 我允许外部工具通过我的它构建的 exe 参数(这将是最终的方式用过)。

如何让我的程序理解带有尾部斜杠的引用路径是一个参数?

编辑this article 的第 4 节准确描述了我的问题。基本上,我想让我的 C++ 程序以与批处理文件或 VBScript 相同的方式解释参数。 我无法更改参数进入我的程序的方式

编辑 我将简化问题:

上面的 C++ 程序的行为如下: The C++ program above behaves like this

我希望它表现得像这样: I want it to behave like this

为了实现这一点,我必须对程序或编译器做些什么?

最佳答案

您必须用另一个反斜杠保护结尾的反斜杠,否则反斜杠将被视为后续双引号的转义字符。看这个blog post雷蒙德·陈 (Raymond Chen) 解释了这种行为的理由。以下是相关部分的引述:

  • A string of backslashes not followed by a quotation mark has no special meaning.
  • An even number of backslashes followed by a quotation mark is treated as pairs of protected backslashes, followed by a word terminator.
  • An odd number of backslashes followed by a quotation mark is treated as pairs of protected backslashes, followed by a protected quotation mark.

关于c++ - 如何以与 VBScript 相同的方式解析命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54266836/

26 4 0
文章推荐: javascript - 检查
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com