我试图在某个标志之后获取命令行中给定的所有输入,看来boost在空格后定界,并且我试图为给定命令获取多个数据。 / p>
例如,给定命令./Program -n Name -t Type -a key=value key=value key=value
名称和类型将被正确存储,但是一系列key = values不会被存储,仅第一个将被存储,而我想存储所有这些。我希望将key=value
存储在该字符串中,而不是仅仅得到key=value key=value key=value
的字符串结果。
有没有一种已知的方法可以允许boost存储不受空格限制的字符串。我无法发布确切的代码,但看起来与此示例非常相似:
#include <boost/program_options.hpp>
#include <iostream>
using namespace boost::program_options;
void on_age(int age)
{
std::cout << "On age: " << age << '\n';
}
int main(int argc, const char *argv[])
{
try
{
options_description desc{"Options"};
desc.add_options()
("help,h", "Help screen")
("name,n", value<string>(), "name")
("type,t", value<string>(), "type")
("args,a", value<string>(), "args");
variables_map vm;
store(parse_command_line(argc, argv, desc), vm);
notify(vm);
if (vm.count("help"))
std::cout << desc << '\n';
if (vm.count("name"))
std::cout << "Name: " << vm["name"].as<string>() << '\n';
if (vm.count("type"))
std::cout << "Type: " << vm["type"].as<string>() << '\n';
if (vm.count("args"))
std::cout << "Args: " << vm["args"].as<string>() << '\n';
}
catch (const error &ex)
{
std::cerr << ex.what() << '\n';
}
}
我可以对代码进行哪些修改,以允许程序选项存储到下一个标志或输入结束为止。通常,这也是最后一个被调用的标志。