diff --git a/include/cxxopts.hpp b/include/cxxopts.hpp index 959f2f1..e4a4099 100644 --- a/include/cxxopts.hpp +++ b/include/cxxopts.hpp @@ -1773,7 +1773,7 @@ namespace cxxopts parse(int argc, const char* const* argv); ParseResult - parse(std::string argv_str); + parse(const std::string& argv_str); OptionAdder add_options(std::string group = ""); @@ -2289,7 +2289,7 @@ Options::parse(int argc, const char* const* argv) inline ParseResult -Options::parse(std::string argv_str) +Options::parse(const std::string& argv_str) { std::vector tokens; std::string token; @@ -2299,15 +2299,14 @@ Options::parse(std::string argv_str) tokens.push_back(token); } - const char** argv = new const char*[tokens.size()]; - for (int i = 0; i < tokens.size(); ++i) { + std::unique_ptr argv(new const char*[tokens.size()]); + for (std::size_t i = 0; i < tokens.size(); ++i) { argv[i] = tokens[i].c_str(); } OptionParser parser(*m_options, m_positional, m_allow_unrecognised); - auto parse_result = parser.parse(tokens.size(), argv); - delete argv; + auto parse_result = parser.parse(static_cast(tokens.size()), argv.get()); return parse_result; }