Use constref for string, smart pointer for char array, and address compilation warnings of 95c7709

This commit is contained in:
HuangZonghao 2022-05-02 14:32:39 -04:00
parent 4f7ab890fa
commit fb50260381

View File

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