Skip to content

Commit 3cb7891

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent dc0d2c9 commit 3cb7891

File tree

5 files changed

+8157
-8090
lines changed

5 files changed

+8157
-8090
lines changed

reference/format/formatter.html

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868

6969
</head>
7070
<body>
71-
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;format&#34;], &#34;id-type&#34;: [&#34;class template&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;cpp&#34;: [&#34;cpp20&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;f0f1f0a4ab5ebbae12a3bb9c2578b97179eb8305&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;format&gt;\n\nenum color { red, green, blue };\n\nconst char* color_names[] = { \&#34;red\&#34;, \&#34;green\&#34;, \&#34;blue\&#34; };\n\ntemplate&lt;&gt;\nstruct std::formatter&lt;color&gt; : std::formatter&lt;const char*&gt; {\n auto format(color c, std::format_context&amp; ctx) const {\n return std::formatter&lt;const char*&gt;::format(color_names[c], ctx);\n }\n};\n\nint main()\n{\n std::cout &lt;&lt; std::format(\&#34;{}\&#34;, red) &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;795293b1e8ac834d0cb3e053df1bcc3f84ab3a64&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;format&gt;\n\nenum color { red, green, blue };\n\nconst char* color_names[] = { \&#34;red\&#34;, \&#34;green\&#34;, \&#34;blue\&#34; };\nconst char* jp_color_names[] = { \&#34;\u8d64\&#34;, \&#34;\u7dd1\&#34;, \&#34;\u9752\&#34; };\n\ntemplate&lt;&gt;\nstruct std::formatter&lt;color&gt; {\n bool is_jp = false;\n\n // \u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306e\u66f8\u5f0f\u6587\u5b57\u5217\u306e\u89e3\u6790\u304c\u3042\u308b\u305f\u3081\u3001\n // constexpr\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\n // \u3053\u306e\u95a2\u6570\u306b\u6e21\u3055\u308c\u308b\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u3001{:%j}\u306e%\u4ee5\u964d\u3002\n // \u89e3\u6790\u304c\u304a\u308f\u3063\u305f\u5834\u6240\u3092\u6307\u3059\u30a4\u30c6\u30ec\u30fc\u30bf\u3092\u8fd4\u3059\u3002\n constexpr auto parse(std::format_parse_context&amp; ctx) {\n auto it = ctx.begin();\n if (*it == &#39;%&#39;) {\n ++it;\n if (*it == &#39;j&#39;) {\n is_jp = true;\n }\n else if (*it == &#39;e&#39;) {\n is_jp = false;\n }\n ++it;\n }\n return it;\n }\n\n // format()\u95a2\u6570\u306f\u66f8\u5f0f\u306e\u60c5\u5831\u3092\u3082\u305f\u306a\u3044\u3002\n // parse()\u95a2\u6570\u3067\u89e3\u6790\u3057\u305f\u66f8\u5f0f\u3092\u30e1\u30f3\u30d0\u5909\u6570\u3067\u4fdd\u6301\u3057\u3066\u304a\u3044\u3066\u3001\n // \u305d\u308c\u3092\u3082\u3068\u306b\u66f8\u5f0f\u5316\u3059\u308b\n auto format(color c, std::format_context&amp; ctx) const {\n return std::format_to(ctx.out(), \&#34;{}\&#34;,\n is_jp ? jp_color_names[c] : color_names[c]\n );\n }\n};\n\nint main()\n{\n std::cout &lt;&lt; std::format(\&#34;{:%j} {:%e}\&#34;, red, blue) &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;format&#34;, &#34;formatter&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;format&#34;], &#34;id-type&#34;: [&#34;class template&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;cpp&#34;: [&#34;cpp20&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;f0f1f0a4ab5ebbae12a3bb9c2578b97179eb8305&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;format&gt;\n\nenum color { red, green, blue };\n\nconst char* color_names[] = { \&#34;red\&#34;, \&#34;green\&#34;, \&#34;blue\&#34; };\n\ntemplate&lt;&gt;\nstruct std::formatter&lt;color&gt; : std::formatter&lt;const char*&gt; {\n auto format(color c, std::format_context&amp; ctx) const {\n return std::formatter&lt;const char*&gt;::format(color_names[c], ctx);\n }\n};\n\nint main()\n{\n std::cout &lt;&lt; std::format(\&#34;{}\&#34;, red) &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;795293b1e8ac834d0cb3e053df1bcc3f84ab3a64&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;format&gt;\n\nenum color { red, green, blue };\n\nconst char* color_names[] = { \&#34;red\&#34;, \&#34;green\&#34;, \&#34;blue\&#34; };\nconst char* jp_color_names[] = { \&#34;\u8d64\&#34;, \&#34;\u7dd1\&#34;, \&#34;\u9752\&#34; };\n\ntemplate&lt;&gt;\nstruct std::formatter&lt;color&gt; {\n bool is_jp = false;\n\n // \u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306e\u66f8\u5f0f\u6587\u5b57\u5217\u306e\u89e3\u6790\u304c\u3042\u308b\u305f\u3081\u3001\n // constexpr\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\n // \u3053\u306e\u95a2\u6570\u306b\u6e21\u3055\u308c\u308b\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u3001{:%j}\u306e%\u4ee5\u964d\u3002\n // \u89e3\u6790\u304c\u304a\u308f\u3063\u305f\u5834\u6240\u3092\u6307\u3059\u30a4\u30c6\u30ec\u30fc\u30bf\u3092\u8fd4\u3059\u3002\n constexpr auto parse(std::format_parse_context&amp; ctx) {\n auto it = ctx.begin();\n if (*it == &#39;%&#39;) {\n ++it;\n if (*it == &#39;j&#39;) {\n is_jp = true;\n }\n else if (*it == &#39;e&#39;) {\n is_jp = false;\n }\n ++it;\n }\n return it;\n }\n\n // format()\u95a2\u6570\u306f\u66f8\u5f0f\u306e\u60c5\u5831\u3092\u3082\u305f\u306a\u3044\u3002\n // parse()\u95a2\u6570\u3067\u89e3\u6790\u3057\u305f\u66f8\u5f0f\u3092\u30e1\u30f3\u30d0\u5909\u6570\u3067\u4fdd\u6301\u3057\u3066\u304a\u3044\u3066\u3001\n // \u305d\u308c\u3092\u3082\u3068\u306b\u66f8\u5f0f\u5316\u3059\u308b\n auto format(color c, std::format_context&amp; ctx) const {\n return std::format_to(ctx.out(), \&#34;{}\&#34;,\n is_jp ? jp_color_names[c] : color_names[c]\n );\n }\n};\n\nint main()\n{\n std::cout &lt;&lt; std::format(\&#34;{:%j} {:%e}\&#34;, red, blue) &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;d25188a377882c9f6e282ac92bd1f5a4bd0c3fe9&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;format&gt;\n\nstruct Point {\n float x, y;\n};\n\ntemplate&lt;&gt;\nstruct std::formatter&lt;Point&gt; : std::formatter&lt;std::string&gt; {\n auto format(Point p, std::format_context&amp; ctx) const {\n return std::formatter&lt;std::string&gt;::format(\n std::format(\&#34;[{}, {}]\&#34;, p.x, p.y),\n ctx);\n }\n};\n\nint main()\n{\n std::cout &lt;&lt; std::format(\&#34;{}\&#34;, Point{1.2f, 3.4f}) &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;format&#34;, &#34;formatter&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -188,8 +188,8 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2024-06-11T13:45:38">
192-
2024年06月11日 13時45分38秒
191+
<span itemprop="datePublished" content="2024-09-17T22:26:07">
192+
2024年09月17日 22時26分07秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -447,17 +447,42 @@ <h3>オリジナル書式を定義する例</h3>
447447
<h4>出力</h4>
448448
<p><pre><code>赤 blue
449449
</code></pre></p>
450+
<h3>複数のメンバ変数を含むクラスの場合</h3>
451+
<p><div class="yata" id="d25188a377882c9f6e282ac92bd1f5a4bd0c3fe9"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
452+
<span class="cp">#include</span> <span class="cpf"><a href="../format.html">&lt;format&gt;</a></span><span class="cp"></span>
453+
454+
<span class="k">struct</span> <span class="n">Point</span> <span class="p">{</span>
455+
<span class="kt">float</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">;</span>
456+
<span class="p">};</span>
457+
458+
<span class="k">template</span><span class="o">&lt;&gt;</span>
459+
<span class="k">struct</span> <span class="n">std</span><span class="o">::</span><span class="n">formatter</span><span class="o">&lt;</span><span class="n">Point</span><span class="o">&gt;</span> <span class="o">:</span> <span class="n">std</span><span class="o">::</span><span class="n">formatter</span><span class="o">&lt;</span><span class="n"><a href="../string/basic_string.html">std::string</a></span><span class="o">&gt;</span> <span class="p">{</span>
460+
<span class="k">auto</span> <span class="n">format</span><span class="p">(</span><span class="n">Point</span> <span class="n">p</span><span class="p">,</span> <span class="n"><a href="basic_format_context.html">std::format_context</a></span><span class="o">&amp;</span> <span class="n">ctx</span><span class="p">)</span> <span class="k">const</span> <span class="p">{</span>
461+
<span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">formatter</span><span class="o">&lt;</span><span class="n"><a href="../string/basic_string.html">std::string</a></span><span class="o">&gt;::</span><span class="n">format</span><span class="p">(</span>
462+
<span class="n"><a href="format.html">std::format</a></span><span class="p">(</span><span class="s">"[{}, {}]"</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">x</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">y</span><span class="p">),</span>
463+
<span class="n">ctx</span><span class="p">);</span>
464+
<span class="p">}</span>
465+
<span class="p">};</span>
466+
467+
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
468+
<span class="p">{</span>
469+
<span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="n"><a href="format.html">std::format</a></span><span class="p">(</span><span class="s">"{}"</span><span class="p">,</span> <span class="n">Point</span><span class="p">{</span><span class="mf">1.2f</span><span class="p">,</span> <span class="mf">3.4f</span><span class="p">})</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span>
470+
<span class="p">}</span>
471+
</code></pre></div>
472+
</div></p>
473+
<h4>出力</h4>
474+
<p><pre><code>[1.2, 3.4]
475+
</code></pre></p>
450476
<h2>バージョン</h2>
451477
<h3>言語</h3>
452478
<ul>
453479
<li>C++20</li>
454480
</ul>
455481
<h3>処理系</h3>
456482
<ul>
457-
<li><a href="../../implementation.html#clang">Clang</a>: ??</li>
483+
<li><a href="../../implementation.html#clang">Clang</a>: 17 <span aria-label="検証済" role="img" title="検証済"></span></li>
458484
<li><a href="../../implementation.html#gcc">GCC</a>: 13 <span aria-label="検証済" role="img" title="検証済"></span></li>
459-
<li><a href="../../implementation.html#icc">ICC</a>: ??</li>
460-
<li><a href="../../implementation.html#visual_cpp">Visual C++</a>: ??</li>
485+
<li><a href="../../implementation.html#visual_cpp">Visual C++</a>: 2022 Update 2 <span aria-label="検証済" role="img" title="検証済"></span></li>
461486
</ul>
462487
<h2>関連項目</h2>
463488
<ul>

rss.xml

Lines changed: 71 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,79 @@
22
<feed xmlns="http://www.w3.org/2005/Atom">
33
<title>cpprefjp - C++日本語リファレンス</title>
44
<link href="https://cpprefjp.github.io" />
5-
<updated>2024-09-17T14:40:41.456467</updated>
6-
<id>c70c6ea0-d001-4c3a-a84a-bdb4afa076b1</id>
5+
<updated>2024-09-17T22:29:17.860520</updated>
6+
<id>d4264e56-a532-421d-a54f-a6d2ea6e6f49</id>
77

88

9+
<entry>
10+
<title>formatter -- formatter : 複数のメンバ変数をもつクラスをformatterで文字列化する例を追加</title>
11+
<link href="https://cpprefjp.github.io/reference/format/formatter.html"/>
12+
<id>806a8c82d9cefa9e298a1ab907a7518d2be1bea7:reference/format/formatter.md</id>
13+
<updated>2024-09-18T07:26:07+09:00</updated>
14+
15+
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/reference/format/formatter.md b/reference/format/formatter.md
16+
index 1c85b3d09..9db8d6c16 100644
17+
--- a/reference/format/formatter.md
18+
+++ b/reference/format/formatter.md
19+
@@ -231,15 +231,47 @@ int main()
20+
赤 blue
21+
```
22+
23+
+
24+
+### 複数のメンバ変数を含むクラスの場合
25+
+```cpp example
26+
+#include &amp;lt;iostream&amp;gt;
27+
+#include &amp;lt;format&amp;gt;
28+
+
29+
+struct Point {
30+
+ float x, y;
31+
+};
32+
+
33+
+template&amp;lt;&amp;gt;
34+
+struct std::formatter&amp;lt;Point&amp;gt; : std::formatter&amp;lt;std::string&amp;gt; {
35+
+ auto format(Point p, std::format_context&amp;amp; ctx) const {
36+
+ return std::formatter&amp;lt;std::string&amp;gt;::format(
37+
+ std::format(&amp;#34;[{}, {}]&amp;#34;, p.x, p.y),
38+
+ ctx);
39+
+ }
40+
+};
41+
+
42+
+int main()
43+
+{
44+
+ std::cout &amp;lt;&amp;lt; std::format(&amp;#34;{}&amp;#34;, Point{1.2f, 3.4f}) &amp;lt;&amp;lt; std::endl;
45+
+}
46+
+```
47+
+* std::format_context[link basic_format_context.md]
48+
+* std::format[link format.md]
49+
+
50+
+#### 出力
51+
+```
52+
+[1.2, 3.4]
53+
+```
54+
+
55+
+
56+
## バージョン
57+
### 言語
58+
- C++20
59+
60+
### 処理系
61+
-- [Clang](/implementation.md#clang): ??
62+
+- [Clang](/implementation.md#clang): 17 [mark verified]
63+
- [GCC](/implementation.md#gcc): 13 [mark verified]
64+
-- [ICC](/implementation.md#icc): ??
65+
-- [Visual C++](/implementation.md#visual_cpp): ??
66+
+- [Visual C++](/implementation.md#visual_cpp): 2022 Update 2 [mark verified]
67+
68+
## 関連項目
69+
- [`vector&amp;lt;bool&amp;gt;`](/reference/vector/vector.md)
70+
&lt;/code&gt;&lt;/pre&gt;</summary>
71+
72+
<author>
73+
<name>Akira Takahashi</name>
74+
<email>[email protected]</email>
75+
</author>
76+
</entry>
77+
978
<entry>
1079
<title>operator== -- optional, tuple, pair, variant : C++26対応としてテンプレートパラメータ制約を整理 #1340</title>
1180
<link href="https://cpprefjp.github.io/reference/optional/optional/op_equal.html"/>
@@ -3412,31 +3481,4 @@ index 000000000..cb0e8389a
34123481
</author>
34133482
</entry>
34143483

3415-
<entry>
3416-
<title>条件式での構造化束縛の使用を許可 [P0963R3] -- コードブロックに言語指定</title>
3417-
<link href="https://cpprefjp.github.io/lang/cpp26/structured_binding_declaration_as_a_condition.html"/>
3418-
<id>e2ee1dac0d39344e83186573bf570f263074ee09:lang/cpp26/structured_binding_declaration_as_a_condition.md</id>
3419-
<updated>2024-09-12T13:50:49+09:00</updated>
3420-
3421-
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/lang/cpp26/structured_binding_declaration_as_a_condition.md b/lang/cpp26/structured_binding_declaration_as_a_condition.md
3422-
index ca4b5730f..a6792786b 100644
3423-
--- a/lang/cpp26/structured_binding_declaration_as_a_condition.md
3424-
+++ b/lang/cpp26/structured_binding_declaration_as_a_condition.md
3425-
@@ -14,7 +14,7 @@ C++26では、`if`文、`while`文、`for`文、`switch`文の条件式におい
3426-
3427-
C++23までは、条件分岐文の初期化式で構造化束縛は使用できたが、その場合に条件式を別途指定する必要があった。C++26では構造化束縛した全体が`bool`型に変換可能であれば、条件式として構造化束縛を使用できるようになった。
3428-
3429-
-```
3430-
+```cpp
3431-
// C++23
3432-
if (auto [to, ec] = std::to_chars(p, last, 42); ec == std::errc{}) {
3433-
auto s = std::string(p, to);
3434-
&lt;/code&gt;&lt;/pre&gt;</summary>
3435-
3436-
<author>
3437-
<name>Akira Takahashi</name>
3438-
<email>[email protected]</email>
3439-
</author>
3440-
</entry>
3441-
34423484
</feed>

0 commit comments

Comments
 (0)