好的,我知道我可以像这样循环:
for (int i=1; i<=argc-1;i++) {
cout << argv[i] << endl;
}
但是这种方式会丢失双引号,即字符串"something here"
被视为 args 数组的一个元素并且引号会丢失。
好的,我知道如果参数内部有空格,我可以假设引号,但是无论是否有空格,引号总是会丢失。
它是删除引号的外壳。如果您希望 shell 将引号传递给您,则必须对它们进行转义:
$ ./my-program \"hello\ world\"
请注意,我也逃避了这个空间,让它成为一个论点。
当您需要原始命令行时,您可以使用 GetCommandLine() API 函数。