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);
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<std::string> 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<const char*[]> 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<int>(tokens.size()), argv.get());
return parse_result;
}