91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Boost?PropertyTree該如何解析INI文件

發布時間:2022-01-05 13:31:02 來源:億速云 閱讀:107 作者:柒染 欄目:開發技術

Boost PropertyTree該如何解析INI文件,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

前言

PropertyTree是一個非常牛叉的東西!雖然很小,但是,相當需要,相當重要!因為,很多的東西,我們不需要去開發,只需要去用就好了,這個東西的開發正的是極好極好的!

更重要的是,它來自大名鼎鼎的Boost庫,這個庫的重要性,已經是不言而喻了!

property_tree是一個保存了多個屬性的樹形數據結構!

可以使用類似訪問路徑的方式問任意節點的屬性,而且每個節點都可以用類似STL的風格遍歷子節點。

property_tree適合于應用程序的配置數據處理,可以解析xml、ini、json和info四種格式的文本數據據

它簡直,就是最好的讀取配置文件庫!

什么是property_tree?

屬性樹庫提供了一種數據結構,該數據結構存儲了任意深度嵌套的值樹,并通過一些鍵在每個級別上建立索引。樹的每個節點都存儲它自己的值,以及它的子節點和它們的鍵的有序列表。樹允許通過路徑方便地訪問任何節點,這是多個鍵的的存儲

此外,該庫為許多數據格式提供了解析器和生成器,這些數據格式可以由這樣的樹表示,包括XML、INI和JSON

屬性樹是通用的數據結構,但特別適合保存配置數據。樹提供了自己的樹特有的接口,并且每個節點也是其子節點的stl兼容序列。【說白了,這就是一個自我嵌套的數據結構】

在概念上,節點可以被認為是以下結構:

struct ptree
{
data_type data;// data associated with the node
list< pair<key_type, ptree>> children;// ordered list of named children
};

可以看到,這個就是一個自我嵌套的一個數據結構!

Boost?PropertyTree該如何解析INI文件

key_type和data_type在某種程度上都是可配置的,但是通常是std::string或std::wstring,而解析器只處理這種樹。

許多軟件項目在其生命周期的某一時刻開發了類似的工具,而屬性樹也以相同的方式產生。我們希望lib能拯救許多人,讓他們不要重新發明輪子。

實現代碼

#include <iostream>
#include <string>
#include <boost/property_tree/ptree.hpp>  
#include <boost/property_tree/ini_parser.hpp>

using namespace std;
using namespace boost;

// 寫入文件
void init_ini(const std::string &filename)
{
    using boost::property_tree::ptree;
    ptree pt;

    // 增加新的鍵值對
    pt.add("config.address", "192.168.1.1");
    pt.add("config.port", 22);
    // 修改原有鍵值對
    pt.put("config.port", 3389);
    write_ini(filename, pt);
}

int main(int argc, char *argv[])
{
    std::string f("c://config.ini");
    init_ini(f);

    // 讀取ini文件
    boost::property_tree::ptree ptr, tag;
    boost::property_tree::ini_parser::read_ini("c://config.ini", ptr);

    tag = ptr.get_child("config");
    std::string address = tag.get<std::string>("address");
    int port = tag.get<int>("port");
    std::cout << "地址: " << address << " 端口: " << port << std::endl;

    std::system("pause");
    return 0;
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石屏县| 吐鲁番市| 乌什县| 潍坊市| 探索| 南宁市| 罗山县| 新田县| 仁寿县| 旺苍县| 安新县| 江津市| 和顺县| 阳谷县| 正镶白旗| 奉新县| 湘潭县| 抚远县| 筠连县| 岳普湖县| 静海县| 平定县| 辽中县| 扶沟县| 鹿泉市| 靖边县| 神木县| 沽源县| 祁连县| 浦北县| 嘉定区| 和平区| 九龙县| 昭苏县| 修武县| 深泽县| 铜梁县| 民县| 宿松县| 玉溪市| 尖扎县|