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

时间:2012-05-31 09:01:09

标签: c++ console mingw

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

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

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

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

2 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:3)

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