提升program_option配置文件的不区分大小写的解析
boost program_option case insensitive parse of a configuration file
我想使用 boost::p rogram_options 从配置文件中读取选项,允许不区分大小写的解析。
例如,考虑以下简单代码:
#include <iostream>
#include <fstream>
#include <string>
#include <boost/program_options/options_description.hpp>
#include <boost/program_options/parsers.hpp>
#include <boost/program_options/variables_map.hpp>
int main()
{
using namespace std;
namespace po = boost::program_options;
ifstream inputfile("input.dat");
po::options_description desc("");
desc.add_options()
("l", po::value<unsigned int>())
;
po::variables_map vm;
po::store(po::parse_config_file(inputfile, desc), vm);
po::notify(vm);
if (vm.count("l"))
cout << "l is set as " << vm["l"].as<unsigned int>() << endl;
else
cout << "l is not set";
return 0;
}
使用以下input.dat
文件
l=3
程序运行良好,提供输出
l is set as 3
如果我将input.dat
更改为
L=3
程序终止引发异常
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::unknown_option> >'
what(): unrecognised option 'L'
Aborted
在命令行上显然可以进行不区分大小写的分析,请参阅此处的讨论。 是否可以也进行大小写解析以从配置文件中读取?
这不是一个选择。
您可以向库维护者推荐功能。
您可以使用其他工具将 inifile 转换为首选大小写,或为大小写补码添加选项描述。
相关文章:
- 使字母检查不区分大小写
- 如何执行不区分大小写的字符串比较?
- 函数中的切换大小写语句不会切换C++
- CMake 添加不区分大小写的源文件
- 提升program_option配置文件的不区分大小写的解析
- 如何提升Perl正则表达式匹配,支持区分大小写/不区分大小写
- 对字符串向量进行排序,但不区分大小写
- 比较最后一个字符,不区分大小写(带谓词?
- 如何创建一个程序来标识最长的子字符串回文,而不考虑字母大小写
- C Visual Studio代码不使用工作区中的单个文件夹编译
- 如何在交换机中将一个枚举值标记为不适当的大小写
- 在字符串的 boost::unordered_set 中使用 Lambda 函数 - 不区分大小写
- 程序在我的C++工作区中找不到头文件
- 开关大小写不调用其中的函数
- 为什么不区分大小写适用于 std::unordered_set的 std::hash 函数?
- 为什么我的代码在开关大小写中不起作用
- 比较字符串大小写不区分的简单方法是什么?
- 如何使字符串中的每个字母不区分大小写
- 不区分大小写的字符串
- Qt:如何在大小写不敏感模式下减去QString的两个QSet