2012-04-04 28 views
0
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 &做lex_cast爲foo &得到的boost :: program_options對待輸入作爲爲const char *代替的std :: string

是否有辦法因爲它做一個lex_cast從const char * &到Foo &而不是?

謝謝!

+0

所以這是一個編譯時的問題?不是運行時問題? – 2012-04-05 14:06:29

回答

0

您可以通過定義一個IStream運營商Foo處理這個問題:

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; 
} 
相關問題