2

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

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

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

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

4

2 回答 2

9

它是删除引号的外壳。如果您希望 shell 将引号传递给您,则必须对它们进行转义:

$ ./my-program \"hello\ world\"

请注意,我也逃避了这个空间,让它成为一个论点。

于 2012-05-31T09:07:42.197 回答
3

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

于 2012-05-31T09:15:43.117 回答