From fb502603816f67f64798c404264e8afca2612444 Mon Sep 17 00:00:00 2001 From: HuangZonghao Date: Mon, 2 May 2022 14:32:39 -0400 Subject: [PATCH] Use constref for string, smart pointer for char array, and address compilation warnings of 95c7709 --- include/cxxopts.hpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) 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; }