argv[i] == "-i"
В строке выше вы сравниваете два указателя: char*
и const char*
соответственно.
Другими словами, вместо сравнения argv[i]
и "-i"
сравниваются два указателя, которыевряд ли указывают на то же место.В результате проверка не работает в вашем случае.
Вы можете исправить это несколькими способами, например, обернуть "-i"
в std::string
, чтобы сравнение работало правильно:
const auto arg = std::string{ "-i" };
for(int i = 0; i < argc; i++){
if(argv[i] == arg){
test = argv[i+1];
break;
}
}
Начиная с C ++ 17 , вы также можете использовать std::string_view
:
const std::string_view sv{ "-i" };
for(int i = 0; i < argc; i++){
if(argv[i] == sv){
test = argv[i+1];
break;
}
}
, который является предпочтительным способом, так как избегает std::string
создание.