繁体   English   中英

INFO解析器,属性树-如何根据单个键收集所有值

[英]INFO parser, property tree - how can I gather all values according to the single key

我有*.txt文件,我想将其解析为字符串。

key1
{
    key2
    {
        key8 value2 value3
        key9 value3 value3
        key3
        {
            key5 value1
            key6 value2
            key7 value3
        }
    }
}

问题是,一个键分配了一个以上的值。 当我试图获得价值时,它只会给我第一个。

boost::property_tree::ptree pt;
boost::property_tree::read_info("C:\\NewFolder\\file.txt", pt);
string padShape = pt.get<std::string>("key1.key2.key8");

我很高兴将所有值都放在一个字符串对象中,我将自己拆分它。

是带有INFO解析器文件示例的网站,其中的值实际上用空格隔开,但是我找不到允许我读取它的方法。

格式不是这样的。 你的例子

    key8 value2 value3

被解析为

    key8 value2
    value3 ""

这意味着您可以像这样修复它:

key1
{
    key2
    {
        key8 "value2 value3"
        key9 "value3 value3"
        key3
        {
            key5 "value1"
            key6 "value2"
            key7 "value3"
        }
    }
}

在Coliru上实时观看

#include <boost/property_tree/info_parser.hpp>
#include <iostream>

int main() {
    boost::property_tree::ptree pt;

    read_info(std::cin, pt);
    write_info(std::cout, pt);
}

打印往返表格:

key1
{
    key2
    {
        key8 "value2 value3"
        key9 "value3 value3"
        key3
        {
            key5 value1
            key6 value2
            key7 value3
        }
    }
}

您链接到的“网站”是增强文档站点。 在此处查看当前版本: http : //www.boost.org/doc/libs/release/doc/html/property_tree/parsers.html#property_tree.parsers.info_parser 并注意该示例如何确切显示如何使用双引号

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM