У меня возникла странная проблема синтаксического анализа аргументов C++ с argv[]
. Ниже приведен пример кода:C++ argv [1] что-то странное
int main(int argc, char **argv) {
for (int i=0; i <argc; i++)
printf("argv[%d] = %s|\n", i, argv[i]);
return 0;
};
Когда я запускаю эту программу так:
./myprogram --aaa-a --bbb-b --ccc-c
результат я получаю как:
argv[0] = myprogram|
argv[1] = --aaa-a --bbb-b|
argv[2] = --ccc-c
, но когда я пытаюсь:
./myprogram --aaa-a --bbb-b --ccc-c
дополнительное пространство между aa a nd bb, я получил:
argv[0] = myprogram|
argv[1] = --aaa-a|
argv[2] = --bbb-b|
argv[3] = --ccc-c|
Может ли кто-нибудь дать мне понять, что здесь происходит?
Какую оболочку вы используете? –
@zenith: да, вы правы. @ Мэтт Макнабб: стандартный тишина Debian. также я удалил флаг -O2 и теперь он работает как ожидалось. –
Не воспроизводимый (http://coliru.stacked-crooked.com/a/852e8bf3919cfd2f). Вам нужно будет предоставить более точную информацию (среда, компилятор, компиляции и т. Д.). –