как предотвратить потерю двойных кавычек в argv?

Хорошо, я знаю, что могу сделать цикл следующим образом:

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

Но таким образом двойные кавычки теряются, то есть строка"something here" рассматривается как один элемент массива args и кавычки теряются.

Хорошо, я знаю, что могу принимать кавычки, если в параметре есть место внутри, но кавычки всегда теряются, независимо от того, есть место или нет.

Ответы на вопрос(2)

Это оболочка, которая удаляет кавычки. Если вы хотите, чтобы оболочка передавала вам кавычки, вы должны их избежать:

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

Обратите внимание, что я также избегаю пробелов, чтобы сделать это одним аргументом.

 31 мая 2012 г., 11:16
@KerrekSB это для некоторых :)
 31 мая 2012 г., 11:08
Блин, бей меня! +1
 31 мая 2012 г., 11:14
@learnvst: StackOverflow не является соревнованием ...
 31 мая 2012 г., 11:18
@Joachim Вы уверены, что тег mingw соответствует вашему ответу bash?
 31 мая 2012 г., 11:27
@harper Выход из пробела не работает в командной строке Windows, но экранирование кавычек должно работать в любой оболочке, даже в командной строке Windows.
Решение Вопроса

Когда вам нужна оригинальная командная строка, вы можете использоватьGetCommandLine () API функция.

 rsk8231 мая 2012 г., 13:26
Эта функция сохраняет двойные кавычки.

Ваш ответ на вопрос