开发者

In Boost::Program_Options, how to set default value for wstring?

开发者 https://www.devze.com 2023-03-24 14:56 出处:网络
My code below did not work: wstring config_file; // Declare a group of options that will be // allowed only on command line

My code below did not work:

wstring config_file;
// Declare a group of options that will be 
// allowed only on command line
po::options_description generic("Generic options");
generic.add_options()
    ("help,h", "produce help message")
    ("config,c", po::wvalue<wstring>(&config_file)->开发者_开发百科;default_value(L"DXDrv.cfg"), "name of a file of a configuration.")
    ;

The compilation failed with error:

d:\repo\a4x_ext\minidxdriver\testapp\configparser\boost\lexical_cast.hpp(1096) : error C2039: 'setg' : is not a member of 'boost::detail::lexical_stream_limited_src<CharT,Base,Traits>'


Long-winded explanation: This is because the underlying typed_value type in program_options tries to do a lexical cast from wchar to char in setting the m_default_value_as_text private member. For whatever reason, the basic_string type does not have the necessary functions to create the correct template types.

Luckily, the typed_value class has a second override for default_value and implicit_value which provides a string representation of the value. This bypasses the lexical_cast, which fixes the problem. Something like:

     tvalue< tstring >()->default_value( _T( "output.png" ), "output.png" )
0

精彩评论

暂无评论...
验证码 换一张
取 消