Parse command line input wrapped in a string
This is the simplest implementation of the functionality described in the short description. This patch only deals with the arguments seperated by whitespaces, and process them as is, without any shell processing like expanding wildcards or replacing variables.
This commit is contained in:
parent
8185e6bb3a
commit
95c77095e3
@ -1772,6 +1772,9 @@ namespace cxxopts
|
|||||||
ParseResult
|
ParseResult
|
||||||
parse(int argc, const char* const* argv);
|
parse(int argc, const char* const* argv);
|
||||||
|
|
||||||
|
ParseResult
|
||||||
|
parse(std::string argv_str);
|
||||||
|
|
||||||
OptionAdder
|
OptionAdder
|
||||||
add_options(std::string group = "");
|
add_options(std::string group = "");
|
||||||
|
|
||||||
@ -2284,6 +2287,30 @@ Options::parse(int argc, const char* const* argv)
|
|||||||
return parser.parse(argc, argv);
|
return parser.parse(argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
ParseResult
|
||||||
|
Options::parse(std::string argv_str)
|
||||||
|
{
|
||||||
|
std::vector<std::string> tokens;
|
||||||
|
std::string token;
|
||||||
|
std::istringstream iss(argv_str);
|
||||||
|
while (std::getline(iss, token, ' '))
|
||||||
|
{
|
||||||
|
tokens.push_back(token);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char** argv = new const char*[tokens.size()];
|
||||||
|
for (int 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;
|
||||||
|
return parse_result;
|
||||||
|
}
|
||||||
|
|
||||||
inline ParseResult
|
inline ParseResult
|
||||||
OptionParser::parse(int argc, const char* const* argv)
|
OptionParser::parse(int argc, const char* const* argv)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user