Files
toml11/ja/docs/reference/format/index.html

459 lines
89 KiB
HTML
Raw Normal View History

<!doctype html><html lang=ja dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="
format.hpp
#
toml::valueのフォーマット情報を持つ構造体と列挙型を定義します。
indent_char
#
インデント情報を表す列挙体です。
enum class indent_char : std::uint8_t
{
space, // use space
tab, // use tab
none // no indent
};
std::ostream& operator<<(std::ostream& os, const indent_char& c);
std::string to_string(const indent_char);
noneを選んだ場合、super tableでの値によらず、インデントは使用されません。
シリアライズ対象の値のなかにspaceとtabを指定する値が同時に存在していた場合、その動作は未規定で、指定していない方の文字が出現する可能性があります。
boolean_format_info
#
booleanのフォーマット情報です。
struct boolean_format_info {};
bool operator==(const boolean_format_info&, const boolean_format_info&) noexcept;
bool operator!=(const boolean_format_info&, const boolean_format_info&) noexcept;
booleanのフォーマット方法は一通りしかないため、設定できる値を持ちません。
integer_format
#
enum class integer_format : std::uint8_t
{
dec = 0,
bin = 1,
oct = 2,
hex = 3,
};
std::ostream& operator<<(std::ostream& os, const integer_format f);
std::string to_string(const integer_format);
integerの基数を指定します。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://toruniina.github.io/toml11/ja/docs/reference/format/"><meta property="og:site_name" content="toml11"><meta property="og:title" content="format.hpp"><meta property="og:description" content="format.hpp # toml::valueのフォーマット情報を持つ構造体と列挙型を定義します
indent_char # インデント情報を表す列挙体です。
enum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream& operator<<(std::ostream& os, const indent_char& c); std::string to_string(const indent_char); noneを選んだ場合、super tableでの値によらず、インデントは使用されません。
シリアライズ対象の値のなかにspaceとtabを指定する値が同時に存在していた場合、その動作は未規定で、指定していない方の文字が出現する可能性があります。
boolean_format_info # booleanのフォーマット情報です。
struct boolean_format_info {}; bool operator==(const boolean_format_info&, const boolean_format_info&) noexcept; bool operator!=(const boolean_format_info&, const boolean_format_info&) noexcept; booleanのフォーマット方法は一通りしかないため、設定できる値を持ちません。
integer_format # enum class integer_format : std::uint8_t { dec = 0, bin = 1, oct = 2, hex = 3, }; std::ostream& operator<<(std::ostream& os, const integer_format f); std::string to_string(const integer_format); integerの基数を指定します。"><meta property="og:locale" content="ja"><meta property="og:type" content="article"><meta property="article:section" content="docs"><title>format.hpp | toml11</title>
<link rel=manifest href=/toml11/manifest.json><link rel=icon href=/toml11/favicon.png><link rel=canonical href=https://toruniina.github.io/toml11/ja/docs/reference/format/><link rel=alternate hreflang=en href=https://toruniina.github.io/toml11/docs/reference/format/ title=format.hpp><link rel=stylesheet href=/toml11/book.min.ddac3efe7ea4c1007ff53e5a8fd67f12517e5d2e99984d8c67a18668f7ecaa03.css integrity="sha256-3aw+/n6kwQB/9T5aj9Z/ElF+XS6ZmE2MZ6GGaPfsqgM=" crossorigin=anonymous><script defer src=/toml11/fuse.min.js></script><script defer src=/toml11/ja.search.min.13aefbf6a803b591c02d5bc9a01dfe65fe37c31e2915c91573708d38e805d86c.js integrity="sha256-E6779qgDtZHALVvJoB3+Zf43wx4pFckVc3CNOOgF2Gw=" crossorigin=anonymous></script></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control>
<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/toml11/ja/><span>toml11</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=検索 aria-label=検索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul class=book-languages><li><input type=checkbox id=languages class=toggle>
<label for=languages class="flex justify-between"><a role=button class="flex align-center"><img src=/toml11/svg/translate.svg class=book-icon alt=Languages>
日本語</a></label><ul><li><a href=https://toruniina.github.io/toml11/docs/reference/format/>English</a></li></ul></li></ul><ul><li><a href=/toml11/ja/docs/installation/>installation</a><ul></ul></li><li><input type=checkbox id=section-b4cfb5b55e913a8d853eacf5e8fba05f class=toggle>
<label for=section-b4cfb5b55e913a8d853eacf5e8fba05f class="flex justify-between"><a href=/toml11/ja/docs/features/>features</a></label><ul><li><a href=/toml11/ja/docs/features/parsing_files/>parsing files</a></li><li><a href=/toml11/ja/docs/features/value/>getting values</a></li><li><a href=/toml11/ja/docs/features/error_message/>error message</a></li><li><a href=/toml11/ja/docs/features/serialize/>serializing values</a></li><li><a href=/toml11/ja/docs/features/configure_types/>configuring types</a></li><li><a href=/toml11/ja/docs/features/literal/>toml literal</a></li><li><a href=/toml11/ja/docs/features/toml_spec/>toml spec</a></li><li><a href=/toml11/ja/docs/features/extension/>extension</a></li></ul></li><li><input type=checkbox id=section-01b096afc5186aea96713b408b47c967 class=toggle checked>
<label for=section-01b096afc5186aea96713b408b47c967 class="flex justify-between"><a href=/toml11/ja/docs/reference/>reference</a></label><ul><li><a href=/toml11/ja/docs/reference/color/>color.hpp</a></li><li><a href=/toml11/ja/docs/reference/comments/>comments.hpp</a></li><li><a href=/toml11/ja/docs/reference/conversion/>conversion.hpp</a></li><li><a href=/toml11/ja/docs/reference/datetime/>datetime.hpp</a></li><li><a href=/toml11/ja/docs/reference/error_info/>error_info.hpp</a></li><li><a href=/toml11/ja/docs/reference/exception/>exception.hpp</a></li><li><a href=/toml11/ja/docs/reference/find/>find.hpp</a></li><li><a href=/toml11/ja/docs/reference/format/ class=active>format.hpp</a></li><li><a href=/toml11/ja/docs/reference/from/>from.hpp</a></li><li><a href=/toml11/ja/docs/reference/get/>get.hpp</a></li><li><a href=/toml11/ja/docs/reference/into/>into.hpp</a></li><li><a href=/toml11/ja/docs/reference/literal/>literal.hpp</a></li><li><a href=/toml11/ja/docs/reference/ordered_map/>ordered_map.hpp</a></li><li><a href=/toml11/ja/docs/reference/parser/>parser.hpp</a></li><li><a href=/toml11/ja/docs/reference/result/>result.hpp</a></li><li><a href=/toml11/ja/docs/reference/serializer/>serializer.hpp</a></li><li><a href=/toml11/ja/docs/reference/source_location/>source_location.hpp</a></li><li><a href=/toml11/ja/docs/reference/spec/>spec.hpp</a></li><li><a href=/toml11/ja/docs/reference/toml_fwd/>toml_fwd.hpp</a></li><li><a href=/toml11/ja/docs/reference/toml/>toml.hpp</a></li><li><a href=/toml11/ja/docs/reference/types/>types.hpp</a></li><li><a href=/toml11/ja/docs/reference/value_t/>value_t.hpp</a></li><li><a href=/toml11/ja/docs/reference/value/>value.hpp</a></li><li><a href=/toml11/ja/docs/reference/version/>version.hpp</a></li><li><a href=/toml11/ja/docs/reference/visit/>visit.hpp</a></li></ul></li><li><a href=/toml11/ja/docs/changelog/>changelog</a><ul></ul></li></ul><ul><li><a href=https://github.com/ToruNiina/toml11 target=_blank rel=noopener>GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/toml11/svg/menu.svg class=book-icon alt=Menu>
</label><strong>format.hpp</strong>
<label for=toc-control><img src=/toml11/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#formathpp>format.hpp</a></li><li><a href=#indent_char><code>indent_char</code></a></li><li><a href=#boolean_format_info><code>boolean_format_info</code></a></li><li><a href=#integer_format><code>integer_format</code></a></li><li><a href=#integer_format_info><code>integer_format_info</code></a><ul><li><a href=#例></a></li><li><a href=#メンバ変数>メンバ変数</a><ul><li><a href=#integer_format-fmt><code>integer_format fmt</code></a></li><li><a href=#bool-uppercase><code>bool uppercase</code></a></li><li><a href=#stdsize_t-width><code>std::size_t width</code></a></li><li><a href=#stdsize_t-spacer><code>std::size_t spacer</code></a></li><li><a href=#stdstring-suffix><code>std::string suffix</code></a></li></ul></li></ul></li><li><a href=#floating_format><code>floating_format</code></a></li><li><a href=#floating_format_info><code>floating_format_info</code></a><ul><li><a href=#例-1></a></li><li><a href=#メンバ変数-1>メンバ変数</a><ul><li><a href=#floating_format-fmt><code>floating_format fmt</code></a></li><li><a href=#stdsize_t-prec><code>std::size_t prec</code></a></li><li><a href=#stdstring-suffix-1><code>std::string suffix</code></a></li></ul></li></ul></li><li><a href=#string_format><code>string_format</code></a></li><li><a href=#string_format_info><code>string_format_info</code></a><ul><li><a href=#例-2></a></li><li><a href=#メンバ変数-2>メンバ変数</a><ul><li><a href=#string_format-fmt><code>string_format fmt</code></a></li><li><a href=#bool-start_with_newline><code>bool start_with_newline</code></a></li></ul></li></ul></li><li><a href=#datetime_delimiter_kind><code>datetime_delimiter_kind</code></a></li><li><a href=#offset_datetime_format_info><code>offset_datetime_format_info</code></a><ul><li><a href=#例-3></a></li><li><a href=#メンバ変数-3>メンバ変数</a><ul><li><a href=#datetime_delimiter_kind-delimiter><code>datetime_delimiter_kind delimiter</code></a></li><li><a href=#bool-has_seconds><code>bool has_seconds</code></a></li><li><a href=#stdsize_t-subsecond_precision><code>std::size_t subsecond_precision</code></a></li></ul></li></ul></li><li><a href=#local_datetime_format_info><code>local_datetime_format_info</code></a><ul><li><a href=#メンバ変数-4>メンバ変数</a><ul><li><a href=#datetime_delimiter_kind-delimiter-1><code>datetime_delimiter_kind delimiter</code></a></li><li><a href=#bool-has_seconds-1><code>bool has_seconds</code></a></li><li><a href=#stdsize_t-subsecond_precision-1><code>std::size_t subsecond_precision</code></a></li></ul></li></ul></li><li><a href=#local_date_format_info><code>local_date_format_info</code></a></li><li><a href=#local_time_format_info><code>local_time_format_info</code></a><ul><li><a href=#メンバ変数-5>メンバ変数</a><ul><li><a href=#bool-has_seconds-2><code>bool has_seconds</code></a></li><li><a href=#stdsize_t-subsecond_precision-2><code>std::size_t subsecond_precision</code></a></li></ul></li></ul></li><li><a href=#array_format><code>array_format</code></a></li><li><a href=#array_format_info><code>array_format_info</code></a><ul><li><a href=#例-4></a></li><li><a href=#メンバ変数-6>メンバ変数</a><ul><li><a href=#array_format-fmt><code>array_format fmt</code></a></li><li><a href=#indent_char-indent_type><code>indent_char indent_type</code></a></li><li><a href=#stdint32_t-body_indent><code>std::int32_t body_indent</code></a></li><li><a href=#stdint32_t-closing_indent><code>std::int32_t closing_indent</code></a></li></ul></li></ul></li><li><a href=#table_format><code>table_format</code></a></li><li><a href=#table_format_info><code>table_format_info</code></a><ul><li><a href=#例-5></a></li><li><a href=#メンバ変数-7>メンバ変数</a><ul><li><a href=#table_format-fmt><code>table_format fmt</code></a></li><li><a href=#indent_char-indent_type-1><code>indent_char indent_type</code></a></li><li><a href=#stdint32_t-body_i
<a class=anchor href=#formathpp>#</a></h1><p><code>toml::value</code>のフォーマット情報を持つ構造体と列挙型を定義します。</p><h1 id=indent_char><code>indent_char</code>
<a class=anchor href=#indent_char>#</a></h1><p>インデント情報を表す列挙体です。</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>enum</span> <span style=color:#66d9ef>class</span> <span style=color:#a6e22e>indent_char</span> <span style=color:#f92672>:</span> std<span style=color:#f92672>::</span><span style=color:#66d9ef>uint8_t</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> space, <span style=color:#75715e>// use space
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> tab, <span style=color:#75715e>// use tab
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> none <span style=color:#75715e>// no indent
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>};
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>&lt;&lt;</span>(std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> os, <span style=color:#66d9ef>const</span> indent_char<span style=color:#f92672>&amp;</span> c);
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>string to_string(<span style=color:#66d9ef>const</span> indent_char);
</span></span></code></pre></div><p><code>none</code>を選んだ場合、super tableでの値によらず、インデントは使用されません。</p><p>シリアライズ対象の値のなかに<code>space</code><code>tab</code>を指定する値が同時に存在していた場合、その動作は未規定で、指定していない方の文字が出現する可能性があります。</p><h1 id=boolean_format_info><code>boolean_format_info</code>
<a class=anchor href=#boolean_format_info>#</a></h1><p><code>boolean</code>のフォーマット情報です。</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>struct</span> <span style=color:#a6e22e>boolean_format_info</span> {};
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>==</span>(<span style=color:#66d9ef>const</span> boolean_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> boolean_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>!=</span>(<span style=color:#66d9ef>const</span> boolean_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> boolean_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span></code></pre></div><p><code>boolean</code>のフォーマット方法は一通りしかないため、設定できる値を持ちません。</p><h1 id=integer_format><code>integer_format</code>
<a class=anchor href=#integer_format>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>enum</span> <span style=color:#66d9ef>class</span> <span style=color:#a6e22e>integer_format</span> <span style=color:#f92672>:</span> std<span style=color:#f92672>::</span><span style=color:#66d9ef>uint8_t</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> dec <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>,
</span></span><span style=display:flex><span> bin <span style=color:#f92672>=</span> <span style=color:#ae81ff>1</span>,
</span></span><span style=display:flex><span> oct <span style=color:#f92672>=</span> <span style=color:#ae81ff>2</span>,
</span></span><span style=display:flex><span> hex <span style=color:#f92672>=</span> <span style=color:#ae81ff>3</span>,
</span></span><span style=display:flex><span>};
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>&lt;&lt;</span>(std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> os, <span style=color:#66d9ef>const</span> integer_format f);
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>string to_string(<span style=color:#66d9ef>const</span> integer_format);
</span></span></code></pre></div><p><code>integer</code>の基数を指定します。</p><h1 id=integer_format_info><code>integer_format_info</code>
<a class=anchor href=#integer_format_info>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>struct</span> <span style=color:#a6e22e>integer_format_info</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> integer_format fmt <span style=color:#f92672>=</span> integer_format<span style=color:#f92672>::</span>dec;
</span></span><span style=display:flex><span> <span style=color:#66d9ef>bool</span> uppercase <span style=color:#f92672>=</span> true; <span style=color:#75715e>// use uppercase letters
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> std<span style=color:#f92672>::</span>size_t width <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>; <span style=color:#75715e>// minimal width (may exceed)
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> std<span style=color:#f92672>::</span>size_t spacer <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>; <span style=color:#75715e>// position of `_` (if 0, no spacer)
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> std<span style=color:#f92672>::</span>string suffix <span style=color:#f92672>=</span> <span style=color:#e6db74>&#34;&#34;</span>; <span style=color:#75715e>// _suffix (library extension)
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>};
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>==</span>(<span style=color:#66d9ef>const</span> integer_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> integer_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>!=</span>(<span style=color:#66d9ef>const</span> integer_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> integer_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span></code></pre></div><h2 id=>
<a class=anchor href=#%e4%be%8b>#</a></h2><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#75715e>#include</span> <span style=color:#75715e>&lt;toml.hpp&gt;</span><span style=color:#75715e>
</span></span></span><span style=display:flex><span><span style=color:#75715e>#include</span> <span style=color:#75715e>&lt;iostream&gt;</span><span style=color:#75715e>
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>int</span> <span style=color:#a6e22e>main</span>()
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> toml<span style=color:#f92672>::</span>value v(<span style=color:#ae81ff>0xDEADBEEF</span>);
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> v <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 3735928559
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> v.as_integer_fmt().uppercase <span style=color:#f92672>=</span> true;
</span></span><span style=display:flex><span> v.as_integer_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>integer_format<span style=color:#f92672>::</span>hex;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> v <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 0xDEADBEEF
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> v.as_integer_fmt().spacer <span style=color:#f92672>=</span> <span style=color:#ae81ff>4</span>;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> v <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 0xDEAD_BEEF
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> v.as_integer_fmt().spacer <span style=color:#f92672>=</span> <span style=color:#ae81ff>8</span>;
</span></span><span style=display:flex><span> v.as_integer_fmt().width <span style=color:#f92672>=</span> <span style=color:#ae81ff>16</span>;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> v <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 0x00000000_DEADBEEF
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>}
</span></span></code></pre></div><h2 id=メンバ変数>メンバ変数
<a class=anchor href=#%e3%83%a1%e3%83%b3%e3%83%90%e5%a4%89%e6%95%b0>#</a></h2><h3 id=integer_format-fmt><code>integer_format fmt</code>
<a class=anchor href=#integer_format-fmt>#</a></h3><p>基数を指定します。</p><h3 id=bool-uppercase><code>bool uppercase</code>
<a class=anchor href=#bool-uppercase>#</a></h3><p>16進数表記で大文字を使用します。</p><h3 id=stdsize_t-width><code>std::size_t width</code>
<a class=anchor href=#stdsize_t-width>#</a></h3><p>最小の幅を指定します。値によってはこの幅を超えることがあります。</p><p>フォーマットした値がこの幅よりも小さい場合、<code>integer_format::dec</code>の場合は効果はありませんが、それ以外の場合は先頭にリーディング<code>0</code>が追加されます。</p><h3 id=stdsize_t-spacer><code>std::size_t spacer</code>
<a class=anchor href=#stdsize_t-spacer>#</a></h3><p>アンダースコア<code>_</code>を追加する幅を指定します。</p><p><code>3</code>の場合<code>1_234_567</code>のように、<code>4</code>の場合<code>0xdead_beef</code>のようにフォーマットされます。</p><p><code>0</code>の場合、アンダースコアは挿入されません。</p><p>不規則な幅を指定することはできません。</p><h3 id=stdstring-suffix><code>std::string suffix</code>
<a class=anchor href=#stdstring-suffix>#</a></h3><p>toml11拡張の<code>spec::ext_num_suffix</code><code>true</code>にしている場合、その<code>suffix</code>がここに保存されます。</p><p>参考:<a href=https://toruniina.github.io/toml11/ja/docs/reference/spec/#ext_num_suffix>spec.hpp</a></p><h1 id=floating_format><code>floating_format</code>
<a class=anchor href=#floating_format>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>enum</span> <span style=color:#66d9ef>class</span> <span style=color:#a6e22e>floating_format</span> <span style=color:#f92672>:</span> std<span style=color:#f92672>::</span><span style=color:#66d9ef>uint8_t</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> defaultfloat <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>,
</span></span><span style=display:flex><span> fixed <span style=color:#f92672>=</span> <span style=color:#ae81ff>1</span>, <span style=color:#75715e>// does not include exponential part
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> scientific <span style=color:#f92672>=</span> <span style=color:#ae81ff>2</span>, <span style=color:#75715e>// always include exponential part
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> hex <span style=color:#f92672>=</span> <span style=color:#ae81ff>3</span> <span style=color:#75715e>// hexfloat extension
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>};
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>&lt;&lt;</span>(std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> os, <span style=color:#66d9ef>const</span> floating_format f);
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>string to_string(<span style=color:#66d9ef>const</span> floating_format);
</span></span></code></pre></div><p><code>floating</code>のフォーマット形式を指定します。
それぞれ、<code>std::defaultfloat</code>, <code>std::fixed</code>, <code>std::scientific</code>, <code>std::hexfloat</code>に対応します。</p><p><code>hexfloat</code>は、<code>toml::spec::ext_hex_float</code><code>true</code>の場合のみ使用可能です。</p><p>参考:<a href=https://toruniina.github.io/toml11/ja/docs/reference/spec/>spec.hpp</a></p><h1 id=floating_format_info><code>floating_format_info</code>
<a class=anchor href=#floating_format_info>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>struct</span> <span style=color:#a6e22e>floating_format_info</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> floating_format fmt <span style=color:#f92672>=</span> floating_format<span style=color:#f92672>::</span>defaultfloat;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>size_t prec <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>; <span style=color:#75715e>// precision (if 0, use the default)
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> std<span style=color:#f92672>::</span>string suffix <span style=color:#f92672>=</span> <span style=color:#e6db74>&#34;&#34;</span>; <span style=color:#75715e>// 1.0e+2_suffix (library extension)
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>};
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>==</span>(<span style=color:#66d9ef>const</span> floating_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> floating_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>!=</span>(<span style=color:#66d9ef>const</span> floating_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> floating_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span></code></pre></div><h2 id=例-1>
<a class=anchor href=#%e4%be%8b-1>#</a></h2><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#75715e>#include</span> <span style=color:#75715e>&lt;toml.hpp&gt;</span><span style=color:#75715e>
</span></span></span><span style=display:flex><span><span style=color:#75715e>#include</span> <span style=color:#75715e>&lt;iostream&gt;</span><span style=color:#75715e>
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>int</span> <span style=color:#a6e22e>main</span>()
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> toml<span style=color:#f92672>::</span>value pi(<span style=color:#ae81ff>3.141592653589793</span>);
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> pi <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 3.14159
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> pi.as_floating_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>floating_format<span style=color:#f92672>::</span>fixed;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> pi <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 3.141593
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> pi.as_floating_fmt().prec <span style=color:#f92672>=</span> <span style=color:#ae81ff>16</span>;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> pi <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 3.1415926535897931
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> toml<span style=color:#f92672>::</span>value na(<span style=color:#ae81ff>6.02214076e+23</span>);
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> na <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 6.022e+23
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> na.as_floating_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>floating_format<span style=color:#f92672>::</span>fixed;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> na <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 602214075999999987023872.000000
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> na.as_floating_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>floating_format<span style=color:#f92672>::</span>scientific;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> na <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 6.022141e+23
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> na.as_floating_fmt().prec <span style=color:#f92672>=</span> <span style=color:#ae81ff>16</span>;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> na <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 6.0221407599999999e+23
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> <span style=color:#66d9ef>return</span> <span style=color:#ae81ff>0</span>;
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h2 id=メンバ変数-1>メンバ変数
<a class=anchor href=#%e3%83%a1%e3%83%b3%e3%83%90%e5%a4%89%e6%95%b0-1>#</a></h2><h3 id=floating_format-fmt><code>floating_format fmt</code>
<a class=anchor href=#floating_format-fmt>#</a></h3><p>フォーマット形式を指定します。</p><h3 id=stdsize_t-prec><code>std::size_t prec</code>
<a class=anchor href=#stdsize_t-prec>#</a></h3><p>小数点以下の精度を指定します。</p><h3 id=stdstring-suffix-1><code>std::string suffix</code>
<a class=anchor href=#stdstring-suffix-1>#</a></h3><p>toml11拡張の<code>spec::ext_num_suffix</code><code>true</code>にしている場合、その<code>suffix</code>がここに保存されます。</p><p>参考:<a href=https://toruniina.github.io/toml11/ja/docs/reference/spec/#ext_num_suffix>spec.hpp</a></p><h1 id=string_format><code>string_format</code>
<a class=anchor href=#string_format>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>enum</span> <span style=color:#66d9ef>class</span> <span style=color:#a6e22e>string_format</span> <span style=color:#f92672>:</span> std<span style=color:#f92672>::</span><span style=color:#66d9ef>uint8_t</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> basic <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>,
</span></span><span style=display:flex><span> literal <span style=color:#f92672>=</span> <span style=color:#ae81ff>1</span>,
</span></span><span style=display:flex><span> multiline_basic <span style=color:#f92672>=</span> <span style=color:#ae81ff>2</span>,
</span></span><span style=display:flex><span> multiline_literal <span style=color:#f92672>=</span> <span style=color:#ae81ff>3</span>
</span></span><span style=display:flex><span>};
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>&lt;&lt;</span>(std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> os, <span style=color:#66d9ef>const</span> string_format f);
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>string to_string(<span style=color:#66d9ef>const</span> string_format);
</span></span></code></pre></div><p>文字列のフォーマット形式を指定します。</p><h1 id=string_format_info><code>string_format_info</code>
<a class=anchor href=#string_format_info>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>struct</span> <span style=color:#a6e22e>string_format_info</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> string_format fmt <span style=color:#f92672>=</span> string_format<span style=color:#f92672>::</span>basic;
</span></span><span style=display:flex><span> <span style=color:#66d9ef>bool</span> start_with_newline <span style=color:#f92672>=</span> false;
</span></span><span style=display:flex><span>};
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>==</span>(<span style=color:#66d9ef>const</span> string_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> string_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>!=</span>(<span style=color:#66d9ef>const</span> string_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> string_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span></code></pre></div><h2 id=例-2>
<a class=anchor href=#%e4%be%8b-2>#</a></h2><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#75715e>#include</span> <span style=color:#75715e>&lt;toml.hpp&gt;</span><span style=color:#75715e>
</span></span></span><span style=display:flex><span><span style=color:#75715e>#include</span> <span style=color:#75715e>&lt;iostream&gt;</span><span style=color:#75715e>
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>int</span> <span style=color:#a6e22e>main</span>()
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> toml<span style=color:#f92672>::</span>value s(<span style=color:#e6db74>&#34;foo&#34;</span>);
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> s <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// &#34;foo&#34;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> s.as_string_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>string_format<span style=color:#f92672>::</span>literal;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> s <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// &#39;foo&#39;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> s.as_string_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>string_format<span style=color:#f92672>::</span>multiline_basic;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> s <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// &#34;&#34;&#34;foo&#34;&#34;&#34;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> s.as_string_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>string_format<span style=color:#f92672>::</span>multiline_literal;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> s <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// &#39;&#39;&#39;foo&#39;&#39;&#39;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> toml<span style=color:#f92672>::</span>value multiline(<span style=color:#e6db74>&#34;foo</span><span style=color:#ae81ff>\n</span><span style=color:#e6db74>bar&#34;</span>);
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> multiline <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// &#34;foo\nbar&#34;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> multiline.as_string_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>string_format<span style=color:#f92672>::</span>multiline_basic;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> multiline <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// &#34;&#34;&#34;foo
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// bar&#34;&#34;&#34;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> multiline.as_string_fmt().start_with_newline <span style=color:#f92672>=</span> true;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> multiline <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// &#34;&#34;&#34;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// foo
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// bar&#34;&#34;&#34;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> multiline.as_string_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>string_format<span style=color:#f92672>::</span>multiline_literal;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> multiline <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// &#39;&#39;&#39;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// foo
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// bar&#39;&#39;&#39;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> <span style=color:#66d9ef>return</span> <span style=color:#ae81ff>0</span>;
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h2 id=メンバ変数-2>メンバ変数
<a class=anchor href=#%e3%83%a1%e3%83%b3%e3%83%90%e5%a4%89%e6%95%b0-2>#</a></h2><h3 id=string_format-fmt><code>string_format fmt</code>
<a class=anchor href=#string_format-fmt>#</a></h3><p>文字列のフォーマット情報を指定します。</p><h3 id=bool-start_with_newline><code>bool start_with_newline</code>
<a class=anchor href=#bool-start_with_newline>#</a></h3><p><code>multiline_basic</code>または<code>multiline_literal</code>の場合、最初の<code>"""</code><code>'''</code>の後に改行を入れるかどうかを指定します。</p><h1 id=datetime_delimiter_kind><code>datetime_delimiter_kind</code>
<a class=anchor href=#datetime_delimiter_kind>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>enum</span> <span style=color:#66d9ef>class</span> <span style=color:#a6e22e>datetime_delimiter_kind</span> <span style=color:#f92672>:</span> std<span style=color:#f92672>::</span><span style=color:#66d9ef>uint8_t</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> upper_T <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>,
</span></span><span style=display:flex><span> lower_t <span style=color:#f92672>=</span> <span style=color:#ae81ff>1</span>,
</span></span><span style=display:flex><span> space <span style=color:#f92672>=</span> <span style=color:#ae81ff>2</span>,
</span></span><span style=display:flex><span>};
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>&lt;&lt;</span>(std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> os, <span style=color:#66d9ef>const</span> datetime_delimiter_kind d);
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>string to_string(<span style=color:#66d9ef>const</span> datetime_delimiter_kind);
</span></span></code></pre></div><p><code>datetime</code>で日付と時刻の間のデリミタにどの文字を使うかを指定します。</p><p><code>T</code>, <code>t</code>, <code></code>が使用可能です。</p><h1 id=offset_datetime_format_info><code>offset_datetime_format_info</code>
<a class=anchor href=#offset_datetime_format_info>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>struct</span> <span style=color:#a6e22e>offset_datetime_format_info</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> datetime_delimiter_kind delimiter <span style=color:#f92672>=</span> datetime_delimiter_kind<span style=color:#f92672>::</span>upper_T;
</span></span><span style=display:flex><span> <span style=color:#66d9ef>bool</span> has_seconds <span style=color:#f92672>=</span> true;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>size_t subsecond_precision <span style=color:#f92672>=</span> <span style=color:#ae81ff>6</span>; <span style=color:#75715e>// [us]
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>};
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>==</span>(<span style=color:#66d9ef>const</span> offset_datetime_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> offset_datetime_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>!=</span>(<span style=color:#66d9ef>const</span> offset_datetime_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> offset_datetime_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span></code></pre></div><h2 id=例-3>
<a class=anchor href=#%e4%be%8b-3>#</a></h2><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#75715e>#include</span> <span style=color:#75715e>&lt;toml.hpp&gt;</span><span style=color:#75715e>
</span></span></span><span style=display:flex><span><span style=color:#75715e>#include</span> <span style=color:#75715e>&lt;iostream&gt;</span><span style=color:#75715e>
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>int</span> <span style=color:#a6e22e>main</span>()
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> toml<span style=color:#f92672>::</span>value v(toml<span style=color:#f92672>::</span>offset_datetime(
</span></span><span style=display:flex><span> toml<span style=color:#f92672>::</span>local_date(<span style=color:#ae81ff>2025</span>, toml<span style=color:#f92672>::</span>month_t<span style=color:#f92672>::</span>Mar, <span style=color:#ae81ff>29</span>),
</span></span><span style=display:flex><span> toml<span style=color:#f92672>::</span>local_time(<span style=color:#ae81ff>1</span>, <span style=color:#ae81ff>23</span>, <span style=color:#ae81ff>45</span>, <span style=color:#75715e>/*ms=*/</span><span style=color:#ae81ff>678</span>, <span style=color:#75715e>/*us=*/</span><span style=color:#ae81ff>901</span>, <span style=color:#75715e>/*ns=*/</span><span style=color:#ae81ff>234</span>),
</span></span><span style=display:flex><span> toml<span style=color:#f92672>::</span>time_offset(<span style=color:#ae81ff>9</span>, <span style=color:#ae81ff>0</span>)
</span></span><span style=display:flex><span> ));
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> v <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 2025-03-29T01:23:45.678901+09:00
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> v.as_offset_datetime_fmt().subsecond_precision <span style=color:#f92672>=</span> <span style=color:#ae81ff>9</span>;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> v <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 2025-03-29T01:23:45.678901234+09:00
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> v.as_offset_datetime_fmt().has_seconds <span style=color:#f92672>=</span> false;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> v <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 2025-03-29T01:23+09:00
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> v.as_offset_datetime_fmt().delimiter <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>datetime_delimiter_kind<span style=color:#f92672>::</span>space;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> v <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// 2025-03-29 01:23+09:00
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> <span style=color:#66d9ef>return</span> <span style=color:#ae81ff>0</span>;
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h2 id=メンバ変数-3>メンバ変数
<a class=anchor href=#%e3%83%a1%e3%83%b3%e3%83%90%e5%a4%89%e6%95%b0-3>#</a></h2><h3 id=datetime_delimiter_kind-delimiter><code>datetime_delimiter_kind delimiter</code>
<a class=anchor href=#datetime_delimiter_kind-delimiter>#</a></h3><p>使用するデリミタを指定します。</p><h3 id=bool-has_seconds><code>bool has_seconds</code>
<a class=anchor href=#bool-has_seconds>#</a></h3><p>秒数を省略するかどうかを指定します。</p><h3 id=stdsize_t-subsecond_precision><code>std::size_t subsecond_precision</code>
<a class=anchor href=#stdsize_t-subsecond_precision>#</a></h3><p>秒以下の精度を何桁出力するかを指定します。</p><h1 id=local_datetime_format_info><code>local_datetime_format_info</code>
<a class=anchor href=#local_datetime_format_info>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>struct</span> <span style=color:#a6e22e>local_datetime_format_info</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> datetime_delimiter_kind delimiter <span style=color:#f92672>=</span> datetime_delimiter_kind<span style=color:#f92672>::</span>upper_T;
</span></span><span style=display:flex><span> <span style=color:#66d9ef>bool</span> has_seconds <span style=color:#f92672>=</span> true;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>size_t subsecond_precision <span style=color:#f92672>=</span> <span style=color:#ae81ff>6</span>; <span style=color:#75715e>// [us]
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>};
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>==</span>(<span style=color:#66d9ef>const</span> local_datetime_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> local_datetime_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>!=</span>(<span style=color:#66d9ef>const</span> local_datetime_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> local_datetime_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span></code></pre></div><h2 id=メンバ変数-4>メンバ変数
<a class=anchor href=#%e3%83%a1%e3%83%b3%e3%83%90%e5%a4%89%e6%95%b0-4>#</a></h2><h3 id=datetime_delimiter_kind-delimiter-1><code>datetime_delimiter_kind delimiter</code>
<a class=anchor href=#datetime_delimiter_kind-delimiter-1>#</a></h3><p>使用するデリミタを指定します。</p><h3 id=bool-has_seconds-1><code>bool has_seconds</code>
<a class=anchor href=#bool-has_seconds-1>#</a></h3><p>秒数を省略するかどうかを指定します。</p><h3 id=stdsize_t-subsecond_precision-1><code>std::size_t subsecond_precision</code>
<a class=anchor href=#stdsize_t-subsecond_precision-1>#</a></h3><p>秒以下の精度を何桁出力するかを指定します。</p><h1 id=local_date_format_info><code>local_date_format_info</code>
<a class=anchor href=#local_date_format_info>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>struct</span> <span style=color:#a6e22e>local_date_format_info</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#75715e>// nothing, for now
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>};
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>==</span>(<span style=color:#66d9ef>const</span> local_date_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> local_date_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>!=</span>(<span style=color:#66d9ef>const</span> local_date_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> local_date_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span></code></pre></div><p><code>local_datetime</code>にはフォーマット指定するパラメータはありません。</p><h1 id=local_time_format_info><code>local_time_format_info</code>
<a class=anchor href=#local_time_format_info>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>struct</span> <span style=color:#a6e22e>local_time_format_info</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#66d9ef>bool</span> has_seconds <span style=color:#f92672>=</span> true;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>size_t subsecond_precision <span style=color:#f92672>=</span> <span style=color:#ae81ff>6</span>; <span style=color:#75715e>// [us]
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>};
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>==</span>(<span style=color:#66d9ef>const</span> local_time_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> local_time_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>!=</span>(<span style=color:#66d9ef>const</span> local_time_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> local_time_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span></code></pre></div><h2 id=メンバ変数-5>メンバ変数
<a class=anchor href=#%e3%83%a1%e3%83%b3%e3%83%90%e5%a4%89%e6%95%b0-5>#</a></h2><h3 id=bool-has_seconds-2><code>bool has_seconds</code>
<a class=anchor href=#bool-has_seconds-2>#</a></h3><p>秒数を省略するかどうかを指定します。</p><h3 id=stdsize_t-subsecond_precision-2><code>std::size_t subsecond_precision</code>
<a class=anchor href=#stdsize_t-subsecond_precision-2>#</a></h3><p>秒以下の精度を何桁出力するかを指定します。</p><h1 id=array_format><code>array_format</code>
<a class=anchor href=#array_format>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>enum</span> <span style=color:#66d9ef>class</span> <span style=color:#a6e22e>array_format</span> <span style=color:#f92672>:</span> std<span style=color:#f92672>::</span><span style=color:#66d9ef>uint8_t</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> default_format <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>,
</span></span><span style=display:flex><span> oneline <span style=color:#f92672>=</span> <span style=color:#ae81ff>1</span>,
</span></span><span style=display:flex><span> multiline <span style=color:#f92672>=</span> <span style=color:#ae81ff>2</span>,
</span></span><span style=display:flex><span> array_of_tables <span style=color:#f92672>=</span> <span style=color:#ae81ff>3</span> <span style=color:#75715e>// [[format.in.this.way]]
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>};
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>&lt;&lt;</span>(std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> os, <span style=color:#66d9ef>const</span> array_format f);
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>string to_string(<span style=color:#66d9ef>const</span> array_format);
</span></span></code></pre></div><ul><li><code>default_format</code><ul><li>適したフォーマットを自動的に選択します。ある程度長い配列は複数行になります。</li></ul></li><li><code>oneline</code><ul><li>全ての要素を一行でフォーマットします。</li></ul></li><li><code>multiline</code><ul><li>一行ごとに一つの要素を出力します。</li></ul></li><li><code>array_of_tables</code><ul><li><code>[[array.of.tables]]</code>の形式でフォーマットします。<code>table</code>以外の要素を含むことはできません。</li></ul></li></ul><h1 id=array_format_info><code>array_format_info</code>
<a class=anchor href=#array_format_info>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>struct</span> <span style=color:#a6e22e>array_format_info</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> array_format fmt <span style=color:#f92672>=</span> array_format<span style=color:#f92672>::</span>default_format;
</span></span><span style=display:flex><span> indent_char indent_type <span style=color:#f92672>=</span> indent_char<span style=color:#f92672>::</span>space;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span><span style=color:#66d9ef>int32_t</span> body_indent <span style=color:#f92672>=</span> <span style=color:#ae81ff>4</span>; <span style=color:#75715e>// indent in case of multiline
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> std<span style=color:#f92672>::</span><span style=color:#66d9ef>int32_t</span> closing_indent <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>; <span style=color:#75715e>// indent of `]`
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>};
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>==</span>(<span style=color:#66d9ef>const</span> array_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> array_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>!=</span>(<span style=color:#66d9ef>const</span> array_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> array_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span></code></pre></div><h2 id=例-4>
<a class=anchor href=#%e4%be%8b-4>#</a></h2><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#75715e>#include</span> <span style=color:#75715e>&lt;toml.hpp&gt;</span><span style=color:#75715e>
</span></span></span><span style=display:flex><span><span style=color:#75715e>#include</span> <span style=color:#75715e>&lt;iostream&gt;</span><span style=color:#75715e>
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>int</span> <span style=color:#a6e22e>main</span>()
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> toml<span style=color:#f92672>::</span>value a(toml<span style=color:#f92672>::</span>array{ <span style=color:#ae81ff>3</span>, <span style=color:#ae81ff>1</span>, <span style=color:#ae81ff>4</span> });
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> a.as_array_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>array_format<span style=color:#f92672>::</span>oneline;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> <span style=color:#e6db74>&#34;a = &#34;</span> <span style=color:#f92672>&lt;&lt;</span> a <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl; <span style=color:#75715e>// a = [3, 1, 4]
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> a.as_array_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>array_format<span style=color:#f92672>::</span>multiline;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> <span style=color:#e6db74>&#34;a = &#34;</span> <span style=color:#f92672>&lt;&lt;</span> a <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl;
</span></span><span style=display:flex><span> <span style=color:#75715e>// a = [
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// 3,
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// 1,
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// 4,
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// ]
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> a.as_array_fmt().body_indent <span style=color:#f92672>=</span> <span style=color:#ae81ff>4</span>;
</span></span><span style=display:flex><span> a.as_array_fmt().closing_indent <span style=color:#f92672>=</span> <span style=color:#ae81ff>2</span>;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> <span style=color:#e6db74>&#34;a = &#34;</span> <span style=color:#f92672>&lt;&lt;</span> a <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl;
</span></span><span style=display:flex><span> <span style=color:#75715e>// a = [
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// 3,
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// 1,
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// 4,
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// ]
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> <span style=color:#66d9ef>return</span> <span style=color:#ae81ff>0</span>;
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h2 id=メンバ変数-6>メンバ変数
<a class=anchor href=#%e3%83%a1%e3%83%b3%e3%83%90%e5%a4%89%e6%95%b0-6>#</a></h2><h3 id=array_format-fmt><code>array_format fmt</code>
<a class=anchor href=#array_format-fmt>#</a></h3><p>フォーマット形式を指定します。</p><h3 id=indent_char-indent_type><code>indent_char indent_type</code>
<a class=anchor href=#indent_char-indent_type>#</a></h3><p>インデントに使用する文字の種類を選択します。</p><h3 id=stdint32_t-body_indent><code>std::int32_t body_indent</code>
<a class=anchor href=#stdint32_t-body_indent>#</a></h3><p><code>array_format::multiline</code>の場合、要素の前に出力するインデントの文字数を指定します。</p><h3 id=stdint32_t-closing_indent><code>std::int32_t closing_indent</code>
<a class=anchor href=#stdint32_t-closing_indent>#</a></h3><p><code>array_format::multiline</code>の場合、閉じ括弧<code>]</code>の前に出力するインデントの文字数を指定します。</p><h1 id=table_format><code>table_format</code>
<a class=anchor href=#table_format>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>enum</span> <span style=color:#66d9ef>class</span> <span style=color:#a6e22e>table_format</span> <span style=color:#f92672>:</span> std<span style=color:#f92672>::</span><span style=color:#66d9ef>uint8_t</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> multiline <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>, <span style=color:#75715e>// [foo] \n bar = &#34;baz&#34;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> oneline <span style=color:#f92672>=</span> <span style=color:#ae81ff>1</span>, <span style=color:#75715e>// foo = {bar = &#34;baz&#34;}
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> dotted <span style=color:#f92672>=</span> <span style=color:#ae81ff>2</span>, <span style=color:#75715e>// foo.bar = &#34;baz&#34;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> multiline_oneline <span style=color:#f92672>=</span> <span style=color:#ae81ff>3</span>, <span style=color:#75715e>// foo = { \n bar = &#34;baz&#34; \n }
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> implicit <span style=color:#f92672>=</span> <span style=color:#ae81ff>4</span> <span style=color:#75715e>// [x] defined by [x.y.z]. skip in serializer.
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>};
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>&lt;&lt;</span>(std<span style=color:#f92672>::</span>ostream<span style=color:#f92672>&amp;</span> os, <span style=color:#66d9ef>const</span> table_format f);
</span></span><span style=display:flex><span>std<span style=color:#f92672>::</span>string to_string(<span style=color:#66d9ef>const</span> table_format);
</span></span></code></pre></div><ul><li><code>multiline</code><ul><li>複数行の通常のテーブルとしてフォーマットします。</li></ul></li><li><code>oneline</code><ul><li>インラインテーブルとしてフォーマットします。</li></ul></li><li><code>dotted</code><ul><li><code>a.b.c = "d"</code>の形式でフォーマットします。</li></ul></li><li><code>multiline_oneline</code><ul><li>改行を含むインラインテーブルとしてフォーマットします。TOML v1.1.0以降で使用可能です。</li><li>参考:<a href=https://toruniina.github.io/toml11/ja/docs/reference/spec/>spec.hpp</a></li></ul></li><li><code>implicit</code><ul><li><code>[x.y.z.w]</code>だけが定義されている際の<code>[x]</code>, <code>[x.y]</code>, <code>[x.y.z]</code>のように、暗黙定義としてスキップします。</li></ul></li></ul><blockquote class="book-hint warning"><p>TOMLの文法上、<code>dotted</code>はサブテーブルを持つことができます。</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-toml data-lang=toml><span style=display:flex><span>[<span style=color:#a6e22e>fruit</span>]
</span></span><span style=display:flex><span><span style=color:#a6e22e>apple</span>.<span style=color:#a6e22e>color</span> = <span style=color:#e6db74>&#34;red&#34;</span>
</span></span><span style=display:flex><span><span style=color:#a6e22e>apple</span>.<span style=color:#a6e22e>taste</span>.<span style=color:#a6e22e>sweet</span> = <span style=color:#66d9ef>true</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># [fruit.apple] # INVALID</span>
</span></span><span style=display:flex><span><span style=color:#75715e># [fruit.apple.taste] # INVALID</span>
</span></span><span style=display:flex><span>[<span style=color:#a6e22e>fruit</span>.<span style=color:#a6e22e>apple</span>.<span style=color:#a6e22e>texture</span>] <span style=color:#75715e># you can add sub-tables</span>
</span></span><span style=display:flex><span><span style=color:#a6e22e>smooth</span> = <span style=color:#66d9ef>true</span>
</span></span></code></pre></div><p>toml11は現時点ではこのフォーマットに対応していません。
<code>dotted</code>テーブルの下にあるテーブルは全て<code>dotted</code>になり、テーブルは強制的にインラインテーブルになります。</p></blockquote><h1 id=table_format_info><code>table_format_info</code>
<a class=anchor href=#table_format_info>#</a></h1><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#66d9ef>struct</span> <span style=color:#a6e22e>table_format_info</span>
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> table_format fmt <span style=color:#f92672>=</span> table_format<span style=color:#f92672>::</span>multiline;
</span></span><span style=display:flex><span> indent_char indent_type <span style=color:#f92672>=</span> indent_char<span style=color:#f92672>::</span>space;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span><span style=color:#66d9ef>int32_t</span> body_indent <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>; <span style=color:#75715e>// indent of values
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> std<span style=color:#f92672>::</span><span style=color:#66d9ef>int32_t</span> name_indent <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>; <span style=color:#75715e>// indent of [table]
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> std<span style=color:#f92672>::</span><span style=color:#66d9ef>int32_t</span> closing_indent <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span>; <span style=color:#75715e>// in case of {inline-table}
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>};
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>==</span>(<span style=color:#66d9ef>const</span> table_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> table_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span><span style=display:flex><span><span style=color:#66d9ef>bool</span> <span style=color:#66d9ef>operator</span><span style=color:#f92672>!=</span>(<span style=color:#66d9ef>const</span> table_format_info<span style=color:#f92672>&amp;</span>, <span style=color:#66d9ef>const</span> table_format_info<span style=color:#f92672>&amp;</span>) <span style=color:#66d9ef>noexcept</span>;
</span></span></code></pre></div><h2 id=例-5>
<a class=anchor href=#%e4%be%8b-5>#</a></h2><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-cpp data-lang=cpp><span style=display:flex><span><span style=color:#75715e>#include</span> <span style=color:#75715e>&lt;toml.hpp&gt;</span><span style=color:#75715e>
</span></span></span><span style=display:flex><span><span style=color:#75715e>#include</span> <span style=color:#75715e>&lt;iostream&gt;</span><span style=color:#75715e>
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>int</span> <span style=color:#a6e22e>main</span>()
</span></span><span style=display:flex><span>{
</span></span><span style=display:flex><span> toml<span style=color:#f92672>::</span>value t(toml<span style=color:#f92672>::</span>table{
</span></span><span style=display:flex><span> {<span style=color:#e6db74>&#34;a&#34;</span>, <span style=color:#ae81ff>42</span>},
</span></span><span style=display:flex><span> {<span style=color:#e6db74>&#34;pi&#34;</span>, <span style=color:#ae81ff>3.14</span>},
</span></span><span style=display:flex><span> {<span style=color:#e6db74>&#34;foo&#34;</span>, <span style=color:#e6db74>&#34;bar&#34;</span>},
</span></span><span style=display:flex><span> {
</span></span><span style=display:flex><span> <span style=color:#e6db74>&#34;table&#34;</span>, toml<span style=color:#f92672>::</span>table{
</span></span><span style=display:flex><span> {<span style=color:#e6db74>&#34;a&#34;</span>, <span style=color:#ae81ff>42</span>},
</span></span><span style=display:flex><span> {<span style=color:#e6db74>&#34;pi&#34;</span>, <span style=color:#ae81ff>3.14</span>},
</span></span><span style=display:flex><span> {<span style=color:#e6db74>&#34;foo&#34;</span>, <span style=color:#e6db74>&#34;bar&#34;</span>}
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span> },
</span></span><span style=display:flex><span> });
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> t <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl;
</span></span><span style=display:flex><span> <span style=color:#75715e>// pi = 3.14
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// foo = &#34;bar&#34;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// a = 42
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>//
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// [table]
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// pi = 3.14
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// foo = &#34;bar&#34;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// a = 42
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> <span style=color:#75715e>// root table cannot be dotted.
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// t.as_table_fmt().fmt = toml::table_format::dotted;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> t.at(<span style=color:#e6db74>&#34;table&#34;</span>).as_table_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>table_format<span style=color:#f92672>::</span>dotted;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> t <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl;
</span></span><span style=display:flex><span> <span style=color:#75715e>// table.pi = 3.14
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// table.foo = &#34;bar&#34;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// table.a = 42
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// pi = 3.14
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// foo = &#34;bar&#34;
</span></span></span><span style=display:flex><span><span style=color:#75715e></span> <span style=color:#75715e>// a = 42
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> t.as_table_fmt().fmt <span style=color:#f92672>=</span> toml<span style=color:#f92672>::</span>table_format<span style=color:#f92672>::</span>oneline;
</span></span><span style=display:flex><span> std<span style=color:#f92672>::</span>cout <span style=color:#f92672>&lt;&lt;</span> t <span style=color:#f92672>&lt;&lt;</span> std<span style=color:#f92672>::</span>endl;
</span></span><span style=display:flex><span> <span style=color:#75715e>// {table = {pi = 3.14, foo = &#34;bar&#34;, a = 42}, pi = 3.14, foo = &#34;bar&#34;, a = 42}
</span></span></span><span style=display:flex><span><span style=color:#75715e></span>
</span></span><span style=display:flex><span> <span style=color:#66d9ef>return</span> <span style=color:#ae81ff>0</span>;
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h2 id=メンバ変数-7>メンバ変数
<a class=anchor href=#%e3%83%a1%e3%83%b3%e3%83%90%e5%a4%89%e6%95%b0-7>#</a></h2><h3 id=table_format-fmt><code>table_format fmt</code>
<a class=anchor href=#table_format-fmt>#</a></h3><p>フォーマット方法を指定します。</p><h3 id=indent_char-indent_type-1><code>indent_char indent_type</code>
<a class=anchor href=#indent_char-indent_type-1>#</a></h3><p>インデントに使用する文字を指定します。</p><h3 id=stdint32_t-body_indent-1><code>std::int32_t body_indent</code>
<a class=anchor href=#stdint32_t-body_indent-1>#</a></h3><p>キーの前に出力するインデントの幅を指定します。</p><p>スーパーテーブルのインデント幅は加算されません。</p><h3 id=stdint32_t-name_indent><code>std::int32_t name_indent</code>
<a class=anchor href=#stdint32_t-name_indent>#</a></h3><p><code>[table]</code>形式のキーのインデントを指定します。</p><p>スーパーテーブルのインデント幅は加算されません。</p><h3 id=stdint32_t-closing_indent-1><code>std::int32_t closing_indent</code>
<a class=anchor href=#stdint32_t-closing_indent-1>#</a></h3><p><code>multiline_oneline</code>の場合に、閉じ括弧<code>}</code>の前のインデント幅を指定します。</p></article><footer class=book-footer><div class="flex flex-wrap justify-between"></div><script>(function(){function e(e){const t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}document.querySelectorAll("pre code").forEach(t=>{t.addEventListener("click",function(){if(window.getSelection().toString())return;e(t.parentElement),navigator.clipboard&&navigator.clipboard.writeText(t.parentElement.textContent)})})})()</script></footer><label for=menu-control class="hidden book-menu-overlay"></label></div><aside class=book-toc><div class=book-toc-content><nav id=TableOfContents><ul><li><a href=#formathpp>format.hpp</a></li><li><a href=#indent_char><code>indent_char</code></a></li><li><a href=#boolean_format_info><code>boolean_format_info</code></a></li><li><a href=#integer_format><code>integer_format</code></a></li><li><a href=#integer_format_info><code>integer_format_info</code></a><ul><li><a href=#例></a></li><li><a href=#メンバ変数>メンバ変数</a><ul><li><a href=#integer_format-fmt><code>integer_format fmt</code></a></li><li><a href=#bool-uppercase><code>bool uppercase</code></a></li><li><a href=#stdsize_t-width><code>std::size_t width</code></a></li><li><a href=#stdsize_t-spacer><code>std::size_t spacer</code></a></li><li><a href=#stdstring-suffix><code>std::string suffix</code></a></li></ul></li></ul></li><li><a href=#floating_format><code>floating_format</code></a></li><li><a href=#floating_format_info><code>floating_format_info</code></a><ul><li><a href=#例-1></a></li><li><a href=#メンバ変数-1>メンバ変数</a><ul><li><a href=#floating_format-fmt><code>floating_format fmt</code></a></li><li><a href=#stdsize_t-prec><code>std::size_t prec</code></a></li><li><a href=#stdstring-suffix-1><code>std::string suffix</code></a></li></ul></li></ul></li><li><a href=#string_format><code>string_format</code></a></li><li><a href=#string_format_info><code>string_format_info</code></a><ul><li><a href=#例-2></a></li><li><a href=#メンバ変数-2>メンバ変数</a><ul><li><a href=#string_format-fmt><code>string_format fmt</code></a></li><li><a href=#bool-start_with_newline><code>bool start_with_newline</code></a></li></ul></li></ul></li><li><a href=#datetime_delimiter_kind><code>datetime_delimiter_kind</code></a></li><li><a href=#offset_datetime_format_info><code>offset_datetime_format_info</code></a><ul><li><a href=#例-3></a></li><li><a href=#メンバ変数-3>メンバ変数</a><ul><li><a href=#datetime_delimiter_kind-delimiter><code>datetime_delimiter_kind delimiter</code></a></li><li><a href=#bool-has_seconds><code>bool has_seconds</code></a></li><li><a href=#stdsize_t-subsecond_precision><code>std::size_t subsecond_precision</code></a></li></ul></li></ul></li><li><a href=#local_datetime_format_info><code>local_datetime_format_info</code></a><ul><li><a href=#メンバ変数-4>メンバ変数</a><ul><li><a href=#datetime_delimiter_kind-delimiter-1><code>datetime_delimiter_kind delimiter</code></a></li><li><a href=#bool-has_seconds-1><code>bool has_seconds</code></a></li><li><a href=#stdsize_t-subsecond_precision-1><code>std::size_t subsecond_precision</code></a></li></ul></li></ul></li><li><a href=#local_date_format_info><code>local_date_format_info</code></a></li><li><a href=#local_time_format_info><code>local_time_format_info</code></a><ul><li><a href=#メンバ変数-5>メンバ変数</a><ul><li><a href=#bool-has_seconds-2><code>bool has_seconds</code></a></li><li><a href=#stdsize_t-subsecond_precision-2><code>std::size_t subsecond_precision</code></a></li></ul></li></ul></li><li><a href=#array_format><code>array_format</code></a></li><li><a href=#array_format_info><code>array_format_info</code></a><ul><li><a href=#例-4></a></li><li><a href=#メンバ変数-6>メンバ変数</a><ul><li><a href=#array_format-fmt><code>array_format fmt</code></a></li><li><a hre