我正在使用Boost.PropertyTree
来读取INI文件:
read_ini( "myIni.ini", pt );
string s=pt.get<std::string>("Section1.value1");
如果section不包含value1
记录,则Boost会引发异常。
如何以优雅的方式阅读INI文件,并在s
不存在的情况下为Section1.value1
提供默认值?
答案 0 :(得分:3)
使用Boost.Optional
:
s = pt.get_optional<std::string>("Section1.value1").get_value_or("default");
// ^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^
答案 1 :(得分:1)
您应该在问题中说明您所指的哪个加速库。答案可在the documentation中找到。
您可以使用get_optional
。
答案 2 :(得分:1)
您正在使用documentation调用&#34;投掷版本&#34; get()
。但是,还有一个&#34;默认值&#34;需要额外参数的版本 - 默认值。作为奖励,通常不需要类型规范,因为类型是从默认值推断出来的。
如果默认值为"default"
,则只需使用
string s=pt.get("Section1.value1", "default");
其他答案提及使用get_optional()
,但这并不是您想要的,因为string s
的值不是可选的(即使INI中Section.value1
文件是可选的。)