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

rsk*_*k82 2 c++ console mingw

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

for (int i=1; i<=argc-1;i++) {
  cout << argv[i] << endl;
}
Run Code Online (Sandbox Code Playgroud)

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

好吧,我知道如果参数里面有空格,我可以假设引号,但无论是否有空格,引号总是丢失.

Som*_*ude 8

它是移除引号的shell.如果您希望shell将引号传递给您,则必须转义它们:

$ ./my-program \"hello\ world\"
Run Code Online (Sandbox Code Playgroud)

请注意,我也会逃避空间,使其成为一个参数.