From 8ddf7d182a4fce68b77c7c686424a1b59cb6f94c Mon Sep 17 00:00:00 2001 From: josh Date: Mon, 7 Jul 2025 21:37:34 -0400 Subject: [PATCH] Fixed iterator usage. --- include/ArgsParser.hpp | 1 + main.cpp | 10 ++++++---- src/ArgsParser.cpp | 5 ++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/ArgsParser.hpp b/include/ArgsParser.hpp index 6663153..3478fe2 100644 --- a/include/ArgsParser.hpp +++ b/include/ArgsParser.hpp @@ -77,6 +77,7 @@ public: /// @return true if found, false otherwise. [[nodiscard]] bool contains(const std::string& token) const; + /// Searches for an argument that contains the given string. [[nodiscard]] bool has_flag_contains(const std::string& match) const; /// Searches for an argument that contains the given string. diff --git a/main.cpp b/main.cpp index 4e8cc1d..9dfd092 100644 --- a/main.cpp +++ b/main.cpp @@ -11,11 +11,13 @@ int main(int argc, char* argv[]) { } std::cout << std::endl; - std::vector fakeArgs {"hello!!", "--color", "#FFFFFF", "what's up?", "--color", "#420690", "Damn jit", "--color", "#FFFFFF"}; //{"--verbose", "--file", "thf", "bruhbruh"}; + std::vector fakeArgs {"--output", "console", "hello!!", "--color", "#FFFFFF", "what's up?", "--color", "#420690", "Damn jit", "--color", "#FFFFFF"}; //{"--verbose", "--file", "thf", "bruhbruh"}; ArgsParser args(fakeArgs); + auto output = args.consume_flag_arg("--output"); + if (args.has_flag("--help")) { @@ -26,15 +28,15 @@ int main(int argc, char* argv[]) { //for (auto args.) for (auto& arg : args.get_remaining_args()) { - if (arg == "--color") + if (arg == "--color") { + + } } std::vector color_codes = args.consume_flag_arg_multiple("--color"); - - if (args.has_flag("--file")) { if (args.has_flag_arg("--file")) { auto filename = args.consume_flag_arg("--file"); diff --git a/src/ArgsParser.cpp b/src/ArgsParser.cpp index 10a4a94..f0586d5 100644 --- a/src/ArgsParser.cpp +++ b/src/ArgsParser.cpp @@ -79,7 +79,7 @@ std::optional ArgsParser::consume_flag_arg(const std::string &flag) std::string ret_val = std::string(*it); args.erase(std::remove(args.begin(), args.end(), flag), args.end()); - args.erase(it); + args.erase(std::remove(args.begin(), args.end(), ret_val), args.end()); return ret_val; } @@ -143,8 +143,7 @@ std::vector ArgsParser::consume_flag_arg_multiple(const std::string if (*it == flag) { if (it != args.end()) { ret_val.push_back(*std::next(it, 1).base()); - it = args.erase(it); - it = args.erase(it); + it = args.erase(it, it+1); //args.erase(it); }