Я бы порекомендовал написать его более многократно.Тот факт, что все параметры должны быть заданы, не должен быть жестко закодирован в логике анализатора параметров.Вы должны просто проверить это в конце, прямо перед тем, как «продолжить отдых».
В таких случаях я обычно делаю следующее:
Прежде всего, для каждого извозможные аргументы У меня есть некоторые переменные, которые содержат разумные значения по умолчанию (так что аргумент может быть опущен), тривиальным примером которого будет bool argument_x_given = false;
Итак, я перебираю заданные аргументы и внутри цикла Iпроверьте текущий аргумент против каждого из возможных аргументов, чтобы найти, какой это аргумент.Если не найден, у нас есть ошибка.Если найден соответствующий аргумент, я анализирую остальную часть аргумента (материал после ':') и устанавливаю переменные, связанные с аргументом.При этом я проверяю, чтобы аргумент не был дубликатом.В приведенном здесь тривиальном примере это будет if( argument_x_given ) { --error-- } else { argument_x_given = true; ... }
.
Наконец, когда цикл завершен, я проверяю, что все необходимые аргументы были заданы.
Итак, что я пытаюсьСказать, что вы ничего не получите, сравнивая строковые массивы, потому что вам все равно придется разбираться во всех ваших аргументах, а также сравнивать строковые массивы - все равно, что пытаться воспользоваться ситуацией.которая очень специфична для рассматриваемой проблемы и не используется повторно.