Ошибка следующей строки:
if (argument == "-print")
Здесь вы сравниваете указатели, а не строковые значения. Заменить на:
if (strcmp(argument, "-print") == 0)
C / C ++ ведет себя иначе, чем Java или C # в отношении обработки строк. Строки не являются нативным типом или объектом, а просто прославляют указатели на массивы символов.
В качестве альтернативы, и если ваш список параметров становится более сложным, рассмотрите возможность использования выделенной библиотеки анализа параметров, такой как Boost ' Program_options . Он будет обрабатывать все аспекты, включая проверку и пользовательские сообщения.