如何防止在 argv 中丢失双引号

how to prevent losing double quotes in argv?

本文关键字:何防止 argv      更新时间:2023-10-16

好的,我知道我可以像这样循环:

for (int i=1; i<=argc-1;i++) {
  cout << argv[i] << endl;
}

但是这样双引号就会丢失,即一个字符串"something here"被视为 args 数组的一个元素,引号就会丢失。

好的,我知道如果参数内部有空格,我可以假设引号,但是无论是否有空格,引号总是丢失。

它是删除引号的外壳。如果你想让 shell 将引号传递给你,你必须转义它们:

$ ./my-program "hello world"

请注意,我也逃离了空间,使其成为一个参数。

当你需要原始命令行时,你可以使用 GetCommandLine() API 函数。