닐이 읽기는 괜찮지 만 Toml ++ 홈페이지가 더 좋습니다. 켈
다음 예는 간결함을 선호합니다. 전체 API 문서와 대신 많은 특정 코드 스 니펫을 선호하는 경우 Project 홈페이지를 방문하십시오.
다음을 포함하는 Toml 파일 configuration.toml 주어지면 :
[ library ]
name = " toml++ "
authors = [ " Mark Gillard <[email protected]> " ]
[ dependencies ]
cpp = 17C ++로 읽는 것은 Toml ++에서 쉽습니다.
# 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> conanfile에 tomlplusplus/3.4.0 추가하십시오.
package.json5 에 tomlpp 추가하십시오.
depends: [
'tomlpp^3.4.0',
]
DDS는 무엇입니까?
.tipi/deps 에 다음 항목을 추가하여 tipi.build 프로젝트에서 tomlplusplus 쉽게 사용할 수 있습니다.
{
"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 함수를 설정합니다. | assert() |
TOML_CALLCONV | 정의하다 | 수출 된 무료/정적 기능에 적용하기 위해 컨벤션에 전화합니다. | 한정되지 않은 |
TOML_CONFIG_HEADER | 문자열 문자 | 라이브러리의 나머지 부분에 주어진 헤더 파일을 포함합니다. | 한정되지 않은 |
TOML_ENABLE_FORMATTERS | 부울 | 포피터를 활성화합니다. 컴파일 시간과 이진 크기를 개선하기 위해 필요하지 않은 경우 0 으로 설정하십시오. | 1 |
TOML_ENABLE_FLOAT16 | 부울 | 내장 된 _Float16 유형을 지원할 수 있습니다. | 컴파일러 설정 당 |
TOML_ENABLE_PARSER | 부울 | 파서를 활성화합니다. 컴파일 시간과 이진 크기를 개선하기 위해 필요하지 않은 경우 0 으로 설정하십시오. | 1 |
TOML_ENABLE_UNRELEASED_FEATURES | 부울 | 미공개 언어 기능을 지원할 수 있습니다. | 0 |
TOML_ENABLE_WINDOWS_COMPAT | 부울 | 넓고 좁은 줄 사이의 투명한 변환을 지원할 수 있습니다. | 창에 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 | 유형 이름 | CodeBase에 사용자 정의 'Small Float'유형 (예 : 절반 프레임)이있는 경우 Toml ++에 대해 알려줍니다. | 한정되지 않은 |
TOML_SMALL_INT_TYPE | 유형 이름 | 코드베이스에 사용자 정의 '작은 정수'유형 (예 : 24 비트)이있는 경우 Toml ++에 대해 알려줍니다. | 한정되지 않은 |
이들 중 다수는 ABI에 영향을 미칩니다. 라이브러리는 인라인 네임 스페이스를 사용하여 실수로 호환되지 않는 조합을 함께 연결하지 못하게합니다.
주어진 시간에 도서관은 Toml 마스터의 다수의 미공개 기능과 Toml 문제 목록의 Sane Cherry-Pics에 대한 옵트 인 지원을 통해 가장 최근에 출시 된 Toml 버전이 무엇이든 지원하는 것을 목표로합니다. 여기서 토론은 거의 연료 릴리스에 포함되어 있음을 나타냅니다.
이 라이브러리 TOML_LANG_MINOR Preprocessor TOML_LANG_MAJOR 를 통해 최신 번호가 매겨진 언어 버전을 광고 TOML_LANG_PATCH .
+09:30:00 과 달리 09:30 지원해야합니다.e Escape 코드 시퀀스 포함 ( u001B 의 속기)xHH 탈출 코드 시퀀스를 포함하십시오
#define TOML_ENABLE_UNRELEASED_FEATURES 1이 기능을 활성화하려면 (구성 참조).
다음을 포함하여 지원되는 모든 기능
지원되는 모든 기능.
기부금은 매우 환영합니다! 문제를보고하거나 풀 요청을 제출함으로써. 풀 요청을 제출하려면 필요한 모든 세부 정보는 기여하는 것을 참조하십시오.
TOML ++는 MIT 라이센스의 조건에 따라 라이센스를받습니다. 라이센스를 참조하십시오.
UTF-8 디코딩은 Bjoern Hoehrmann의 '유연하고 경제적 인 UTF-8 디코더'를 기반으로 한 상태 기계를 사용하여 수행됩니다.
toml::path S 기능을 설계하고 구현했습니다버그 보고서 및 기능 요청의 경우 GitHub의 문제 시스템 사용을 고려하십시오. 다른 방법으로는 다른 방법을 통해 연락을받을 수 있습니다. 응답 시간 순서대로 :