此讀數很好,但是toml ++主頁更好。配x
以下示例有利於簡潔。如果您喜歡完整的API文檔和許多特定代碼段,請訪問項目主頁
給定一個toml文件configuration.toml包含以下內容:
[ library ]
name = " toml++ "
authors = [ " Mark Gillard <[email protected]> " ]
[ dependencies ]
cpp = 17使用TOML ++,在C ++中閱讀它很容易:
# include < toml++/toml.hpp >
using namespace std ::literals ;
auto config = toml::parse_file( " configuration.toml " );
// get key-value pairs
std::string_view library_name = config[ " library " ][ " name " ].value_or( " " sv);
std::string_view library_author = config[ " library " ][ " authors " ][ 0 ].value_or( " " sv);
int64_t depends_on_cpp_version = config[ " dependencies " ][ " cpp " ].value_or( 0 );
// modify the data
config.insert_or_assign( " alternatives " , toml::array{
" cpptoml " ,
" toml11 " ,
" Boost.TOML "
});
// use a visitor to iterate over heterogenous data
config.for_each([]( auto & key, auto & value)
{
std::cout << value << " n " ;
if constexpr (toml::is_string< decltype (value)>)
do_something_with_string_values (value);
});
// you can also iterate more 'traditionally' using a ranged-for
for ( auto && [k, v] : config)
{
// ...
}
// re-serialize as TOML
std::cout << config << " n " ;
// re-serialize as JSON
std::cout << toml::json_formatter{ config } << " n " ;
// re-serialize as YAML
std::cout << toml::yaml_formatter{ config } << " n " ;
您將在examples目錄中找到更多代碼示例,還有更多代碼示例作為API文檔的一部分。
toml++有兩種口味:單頭和常規。兩者的API都是相同的。
toml.hpp放在源樹上的任何地方tomlplusplus/include您的路徑#include <toml++/toml.hpp>將tomlplusplus/3.4.0添加到您的粉碎機中。
將tomlpp添加到您的package.json5中。json5,例如:
depends: [
'tomlpp^3.4.0',
]
什麼是DDS?
通過將以下條目添加tomlplusplus您的.tipi/deps :
{
"marzer/tomlplusplus" : {}
} vcpkg install tomlplusplus
您可以安裝包裝紙:
meson wrap install tomlplusplus
之後,您可以像常規依賴性一樣使用它:
tomlplusplus_dep = dependency ( ' tomlplusplus ' )您也可以將其直接添加為子標記。
include (FetchContent)
FetchContent_Declare(
tomlplusplus
GIT_REPOSITORY https://github.com/marzer/tomlplusplus.git
GIT_TAG v3.4.0
)
FetchContent_MakeAvailable(tomlplusplus)
# Example add library: target_link_libraries(MyApp tomlplusplus::tomlplusplus)什麼是fetchcontent?
git submodule add --depth 1 https://github.com/marzer/tomlplusplus.git tomlplusplus
C ++工俱生態系統是無限混亂的分形噩夢,因此自然而然地,我並不是所有可用的包裝和集成選項。不過,我總是很高興看到新的支持!如果您想看到一些集成並擁有技術知識來實現它,請隨時提出拉動請求。
如果您只想將toml++作為常規庫消費,那麼您就無需擔心任何依賴。不過,有一些與測試有關的依賴關係可以意識到您是否在圖書館工作。有關信息,請參見貢獻。
以預處理#defines的形式暴露了許多可配置的選項,您很可能根本不需要弄亂這些選項,但是如果這樣做,請在包含toml ++之前設置它們。
| 選項 | 類型 | 描述 | 預設 |
|---|---|---|---|
TOML_ASSERT(expr) | 功能宏 | 設置庫使用的斷言函數。 | assert() |
TOML_CALLCONV | 定義 | 呼籲公約適用於導出的免費/靜態功能。 | 不明確的 |
TOML_CONFIG_HEADER | 字符串文字 | 在庫的其餘部分之前包括給定的標頭文件。 | 不明確的 |
TOML_ENABLE_FORMATTERS | 布爾 | 啟用格式。如果您不需要提高編譯時間和二進制尺寸,則設置為0 。 | 1 |
TOML_ENABLE_FLOAT16 | 布爾 | 啟用支持內置_Float16類型的支持。 | 每個編譯器設置 |
TOML_ENABLE_PARSER | 布爾 | 啟用解析器。如果您不需要改善編譯時間和二進制尺寸,則設置為0 。 | 1 |
TOML_ENABLE_UNRELEASED_FEATURES | 布爾 | 支持未發行的TOML語言功能。 | 0 |
TOML_ENABLE_WINDOWS_COMPAT | 布爾 | 可以支持寬和窄字符串之間的透明轉換。 | Windows上有1 |
TOML_EXCEPTIONS | 布爾 | 設置庫是否使用異常。 | 每個編譯器設置 |
TOML_EXPORTED_CLASS | 定義 | API導出註釋將添加到類中。 | 不明確的 |
TOML_EXPORTED_MEMBER_FUNCTION | 定義 | API導出註釋將添加到非靜態類成員功能中。 | 不明確的 |
TOML_EXPORTED_FREE_FUNCTION | 定義 | API導出註釋添加到免費功能。 | 不明確的 |
TOML_EXPORTED_STATIC_FUNCTION | 定義 | API導出註釋添加到靜態功能。 | 不明確的 |
TOML_HEADER_ONLY | 布爾 | 禁用此操作以明確控制TOML ++的實現位置(例如,作為庫的一部分)。 | 1 |
TOML_IMPLEMENTATION | 定義 | 將其定義為啟用TOML_HEADER_ONLY == 0時庫的實施彙編。 | 不明確的 |
TOML_OPTIONAL_TYPE | 類型名稱 | 如果您需要比STD ::可選的更好的東西,則覆蓋庫使用的optional<T>類型。 | 不明確的 |
TOML_SMALL_FLOAT_TYPE | 類型名稱 | 如果您的代碼庫具有自定義的“小浮點”類型(例如半精確),則可以告訴Toml ++。 | 不明確的 |
TOML_SMALL_INT_TYPE | 類型名稱 | 如果您的代碼庫具有自定義的“小整數”類型(例如24位),則可以告訴Toml ++。 | 不明確的 |
其中許多具有ABI的影響;該庫使用內聯命名空間來防止您將不兼容的組合鏈接在一起。
在任何給定時間,圖書館的目標是支持最近發布的TOML版本的任何內容,並選擇支持Toml Master的許多未發行的功能,並從TOML問題列表中獲得一些理智的櫻桃挑選,其中討論強烈表明將其包含在近乎預測的版本中。
圖書館通過預處理器定義了TOML_LANG_MAJOR , TOML_LANG_MINOR和TOML_LANG_PATCH宣傳其最新編號的語言版本。
+關鍵名稱09:30 ,而不是09:30:00e逃生代碼序列( u001B的速記)xHH逃生代碼序列
#define TOML_ENABLE_UNRELEASED_FEATURES 1啟用這些功能(請參閱配置)。
支持的所有功能,包括:
支持所有功能。
貢獻非常歡迎!通過報告問題或提交拉請請求。如果您想提交拉動請求,請參閱貢獻您需要獲取的所有詳細信息。
TOML ++是根據MIT許可條款獲得許可的 - 請參閱許可證。
UTF-8解碼是使用基於Bjoern Hoehrmann的“靈活且經濟的UTF-8解碼器”的狀態機執行的。
toml::path S功能有關錯誤報告和功能請求,請考慮使用GitHub上的問題系統。儘管如此,您還是歡迎您通過其他方式伸出援手。按照可能的響應時間: