11мес



Программирование
+2Вопрос с проблемами if () {} в C++
Есть такая функция
12345678910111213141516171819202122232425
bool ArgumentsParser(int argc, char* argv[]) {
System::print(_("Parsing arguments..."), " ");
int exitc = -1;
if (argc > 1) {
for (int i = 0; i < argc; i++) {
try {
string arg = argv[i];
System::print(arg.substr(0, 15));
if (arg.substr(0, 10) == "--graphics") { Graphics(); }
else if (arg.substr(0, 9) == "--autorun") { Autorun(); }
else if (arg.substr(0, 15) == "--autorun-file=") { json::change_member(json::LoadedFilesJson, "AUTORUN", cutestring(arg, 15)); exitc = 1; System::fmLogger.log(_("Changed autorun file.")); }
else if (arg.substr(0, 14) == "--autorun-file") { json::change_member(json::LoadedFilesJson, "AUTORUN", argv[i + 1]); exitc = 1; System::fmLogger.log(_("Changed autorun file.")); }
else if (arg.substr(0, 16) == "--import-config=") { json::Config = json::open_json(cutestring(arg, 16)); exitc = 1; System::fmLogger.log(_("Import custom config.")); }
else if (arg.substr(0, 15) == "--import-config") { json::Config = json::open_json(argv[i + 1]); exitc = 1; System::fmLogger.log(_("Import custom config.")); }
else { exitc = 1; }
}
catch (...) {}
}
if (exitc == -1) { exitc = 0; }
} else { exitc = 1; }
System::print(_("Done"), "\r");
return exitc;
}
argv[1] это "--autorun-file=file.ars".
Проблема заключается в том что я обрезаю строку, через принт вижу что она равна "--autorun-file=", но почему то не проходит проверка if
cutestring(string, int) была объявлена в другим файле и обрезает начало строки
Что делать, всю голову сломал уже.
По дате
По рейтингу
Потому что её перебивает эта строчка:
else if (arg.substr(0, 9) == "--autorun") { Autorun(); }
Больше по теме