小编Lar*_*vid的帖子

提升program_options异常不替换%canonical_option%标记

已经将此版本(版本1.52.0)集成到我的应用程序中,但如上所述偶然发现了问题.

在附加的示例中,异常what()方法始终仍然保留%canonical_option%标记,并且不会替换为我的选项名称.

我正在使用VS2008,禁用了unicode(选项'none')并从我的项目中删除了所有其他文件,它只是main.cpp文件中的这个代码.

或者我把这一切都搞错了,我还应该调用其他一些东西,用正确的参数名称格式化异常消息?

#include <boost/program_options.hpp>

namespace po = boost::program_options;

using namespace std;

int main(int argc, char* argv[])
{

    try {

        po::options_description optionalParams("optional");

        optionalParams.add_options() 
            ("log_severity,l", po::value<int>()->required(), "Minimum severity logging level")
            ("log_file,g", po::value<string>(), "Full path to log file")
            ;

        po::variables_map optMap;

        po::parsed_options parsed = po::command_line_parser(argc, argv)
            .options(optionalParams)
            .allow_unregistered()
            .run();

        po::store(parsed, optMap);

        po::notify(optMap);

    }
    catch(po::error e)
    {
        cout << e.what();
        return 0;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ boost exception

11
推荐指数
1
解决办法
5242
查看次数

标签 统计

boost ×1

c++ ×1

exception ×1