Я пытаюсь передать аргументы через main, которая работает нормально, затем я проверяю, содержит ли переданный аргумент правильный формат / значение. Однако, даже если я укажу правильный формат, он все равно покажет, что что-то не так, вот код:
int main(int argc, char* argv[]) {
/* Check if arguments are being passed through */
if(argc == 1){
cout << endl << "--- ERROR ---" << endl;
exit(0);
}
/* Check if the first argument contains the correct data */
string file_name = argv[1];
/* Handle operation */
string operation = argv[2];
if(operation != "-t" || operation != "-r")
{
cout << "Something is not right";
}
}
Если я сделаю: cout << operation;
тогда результат будет: -t
при прохождении -t через когда я запускаю приложения.
Кто-нибудь может подсказать, где я могу пойти не так?
ОБНОВИТЬ:
Я передам эти аргументы:
./main something.wav -t
Я ожидаю заявления if:
if(operation != "-t" || operation != "-r")
{
cout << "Something is not right";
}
Чтобы вернуть отрицательное значение, поскольку введенное мной значение равно -t
if(operation != "-t" || operation != "-r")
{
cout << "Something is not right";
}
Какой бы ни была операция, она должна быть либо не равна «-t», либо не равна «-r», так что это будет всегда печать «Что-то не так».
Я ожидаю заявления if:
Чтобы вернуть отрицательное значение, поскольку введенное мной значение равно -t
Вторая половина ИЛИ верна. ИЛИ истинно, если первая половина ИЛИ вторая половина истинна. Ты хочешь ((operation != "-t") && (operation != "-r"))
, Таким образом, if
будет срабатывать только если ввод не -t а также это также не -r.
Других решений пока нет …