获取boost :: program_options将输入视为const char *而不是std :: string

时间:2012-04-04 13:35:45

标签: c++ boost-program-options

class Foo {};
Foo foo;

namespace po = boost::program_options;

boost::program_options::options_description desc("Allowed options")
desc.add_options()
    ("foo", po::value<Foo>(&foo));

po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);

以上将最终尝试从std :: string&amp;做一个lex_cast。到Foo&amp;

有没有办法从const char *&amp;做一个lex_cast?为了Foo&amp;代替?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以通过为Foo

定义istream运算符来处理此问题
std::istream& operator>>(std::istream &input_stream, Foo &foo) {
    // read from input_stream into foo...
    // if read fails, set failbit in input_stream...
    return input_stream;
}
相关问题