Skip to content

Commit 51653d3

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent eb86659 commit 51653d3

File tree

7 files changed

+790
-547
lines changed

7 files changed

+790
-547
lines changed

reference/string/basic_string/op_plus.html

Lines changed: 109 additions & 4 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;string&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;id-type&#34;: [&#34;function template&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;5a5b944643b7eb709ec1dc76bdaf86231a131e33&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;string&gt;\n\nint main()\n{\n std::string s1(\&#34;Hell\&#34;);\n std::string s2(\&#34;world\&#34;);\n\n std::string s3 = s1 + &#39;o&#39; + \&#34;, \&#34; + s2 + &#39;!&#39;;\n\n std::cout &lt;&lt; s3 &lt;&lt; &#39;\\n&#39;;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;string&#34;, &#34;basic_string&#34;, &#34;op_plus&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;string&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;id-type&#34;: [&#34;function template&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;5a5b944643b7eb709ec1dc76bdaf86231a131e33&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;string&gt;\n\nint main()\n{\n std::string s1(\&#34;Hell\&#34;);\n std::string s2(\&#34;world\&#34;);\n\n std::string s3 = s1 + &#39;o&#39; + \&#34;, \&#34; + s2 + &#39;!&#39;;\n\n std::cout &lt;&lt; s3 &lt;&lt; &#39;\\n&#39;;\n}\n&#34;}, {&#34;id&#34;: &#34;140d8b7a3041e4dc85e9f9f24b88f3060d371279&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;string&gt;\n#include &lt;string_view&gt;\n\nint main()\n{\n std::string s = \&#34;Hello\&#34;;\n std::string_view sv = \&#34;, World!\&#34;;\n\n // string + string_view (13)\n std::string result1 = s + sv;\n std::cout &lt;&lt; result1 &lt;&lt; &#39;\\n&#39;;\n\n // string&amp;&amp; + string_view (14)\n std::string result2 = std::string(\&#34;Hello\&#34;) + sv;\n std::cout &lt;&lt; result2 &lt;&lt; &#39;\\n&#39;;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;string&#34;, &#34;basic_string&#34;, &#34;op_plus&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -200,8 +200,8 @@
200200

201201
<p class="text-right"><small>
202202
最終更新日時(UTC):
203-
<span itemprop="datePublished" content="2025-05-23T01:33:50">
204-
2025年05月23日 01時33分50秒
203+
<span itemprop="datePublished" content="2026-03-11T04:40:57">
204+
2026年03月11日 04時40分57秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -334,11 +334,41 @@
334334
<span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="p">,</span><span class="w"> </span><span class="n">Allocator</span><span class="o">&gt;</span>
335335
<span class="w"> </span><span class="k">operator</span><span class="o">+</span><span class="p">(</span><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="p">,</span><span class="w"> </span><span class="n">Allocator</span><span class="o">&gt;&amp;&amp;</span><span class="w"> </span><span class="n">lhs</span><span class="p">,</span>
336336
<span class="w"> </span><span class="n">charT</span><span class="w"> </span><span class="n">rhs</span><span class="p">);</span><span class="w"> </span><span class="c1">// (12) C++20</span>
337+
338+
<span class="w"> </span><span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">charT</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">traits</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">Allocator</span><span class="o">&gt;</span>
339+
<span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="p">,</span><span class="w"> </span><span class="n">Allocator</span><span class="o">&gt;</span>
340+
<span class="w"> </span><span class="k">operator</span><span class="o">+</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="p">,</span><span class="w"> </span><span class="n">Allocator</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">lhs</span><span class="p">,</span>
341+
<span class="w"> </span><span class="n">type_identity_t</span><span class="o">&lt;</span><span class="n"><a href="../../string_view/basic_string_view.html">basic_string_view</a></span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="o">&gt;&gt;</span><span class="w"> </span><span class="n">rhs</span><span class="p">);</span><span class="w"> </span><span class="c1">// (13) C++26</span>
342+
343+
<span class="w"> </span><span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">charT</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">traits</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">Allocator</span><span class="o">&gt;</span>
344+
<span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="p">,</span><span class="w"> </span><span class="n">Allocator</span><span class="o">&gt;</span>
345+
<span class="w"> </span><span class="k">operator</span><span class="o">+</span><span class="p">(</span><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="p">,</span><span class="w"> </span><span class="n">Allocator</span><span class="o">&gt;&amp;&amp;</span><span class="w"> </span><span class="n">lhs</span><span class="p">,</span>
346+
<span class="w"> </span><span class="n">type_identity_t</span><span class="o">&lt;</span><span class="n"><a href="../../string_view/basic_string_view.html">basic_string_view</a></span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="o">&gt;&gt;</span><span class="w"> </span><span class="n">rhs</span><span class="p">);</span><span class="w"> </span><span class="c1">// (14) C++26</span>
337347
<span class="p">}</span>
338348
</code></pre></div>
339349
</p>
350+
<ul>
351+
<li>type_identity_t[link /reference/type_traits/type_identity.md]</li>
352+
<li>basic_string_view[link /reference/string_view/basic_string_view.md]</li>
353+
</ul>
340354
<h2>概要</h2>
341355
<p><code>basic_string</code> オブジェクトの連結を行う。</p>
356+
<ul>
357+
<li>(1) : <code>basic_string</code>オブジェクト同士を連結する</li>
358+
<li>(2) : 右辺値の<code>basic_string</code>オブジェクトと<code>basic_string</code>オブジェクトを連結する</li>
359+
<li>(3) : <code>basic_string</code>オブジェクトと右辺値の<code>basic_string</code>オブジェクトを連結する</li>
360+
<li>(4) : 右辺値の<code>basic_string</code>オブジェクト同士を連結する</li>
361+
<li>(5) : 文字配列と<code>basic_string</code>オブジェクトを連結する</li>
362+
<li>(6) : 文字配列と右辺値の<code>basic_string</code>オブジェクトを連結する</li>
363+
<li>(7) : 文字と<code>basic_string</code>オブジェクトを連結する</li>
364+
<li>(8) : 文字と右辺値の<code>basic_string</code>オブジェクトを連結する</li>
365+
<li>(9) : <code>basic_string</code>オブジェクトと文字配列を連結する</li>
366+
<li>(10) : 右辺値の<code>basic_string</code>オブジェクトと文字配列を連結する</li>
367+
<li>(11) : <code>basic_string</code>オブジェクトと文字を連結する</li>
368+
<li>(12) : 右辺値の<code>basic_string</code>オブジェクトと文字を連結する</li>
369+
<li>(13) : <code>basic_string</code>オブジェクトと<code><a href="../../string_view/basic_string_view.html">basic_string_view</a></code>オブジェクトを連結する</li>
370+
<li>(14) : 右辺値の<code>basic_string</code>オブジェクトと<code><a href="../../string_view/basic_string_view.html">basic_string_view</a></code>オブジェクトを連結する</li>
371+
</ul>
342372
<h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a></h2>
343373
<h3>C++17まで</h3>
344374
<ul>
@@ -458,6 +488,23 @@ <h3>C++20から</h3>
458488
</code></pre></div>
459489
</p>
460490
</li>
491+
<li>
492+
<p>(13) : 以下と等価
493+
<br />
494+
<div class="codehilite"><pre><span></span><code><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="p">,</span><span class="w"> </span><span class="n">Allocator</span><span class="o">&gt;</span><span class="w"> </span><span class="n">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">lhs</span><span class="p">;</span>
495+
<span class="n">r</span><span class="p">.</span><span class="n"><a href="append.html">append</a></span><span class="p">(</span><span class="n">rhs</span><span class="p">);</span>
496+
<span class="k">return</span><span class="w"> </span><span class="n">r</span><span class="p">;</span>
497+
</code></pre></div>
498+
</p>
499+
</li>
500+
<li>
501+
<p>(14) : 以下と等価
502+
<br />
503+
<div class="codehilite"><pre><span></span><code><span class="n">lhs</span><span class="p">.</span><span class="n"><a href="append.html">append</a></span><span class="p">(</span><span class="n">rhs</span><span class="p">);</span>
504+
<span class="k">return</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">lhs</span><span class="p">);</span>
505+
</code></pre></div>
506+
</p>
507+
</li>
461508
</ul>
462509
<h2>備考</h2>
463510
<p>(5), (6) の形式の <code>lhs</code>、および、(9), (10) の形式の <code>rhs</code> の文字列長算出のために <code>traits::length()</code> が使用される</p>
@@ -571,10 +618,27 @@ <h2>アロケータの伝播</h2>
571618
<td><code>lhs</code></td>
572619
<td><code>lhs</code></td>
573620
</tr>
621+
<tr>
622+
<td>(13) : <code>lhs + sv</code></td>
623+
<td></td>
624+
<td></td>
625+
<td></td>
626+
<td></td>
627+
<td><code>lhs</code>からのSOCCC</td>
628+
</tr>
629+
<tr>
630+
<td>(14) : <code>std::move(lhs) + sv</code></td>
631+
<td></td>
632+
<td></td>
633+
<td></td>
634+
<td></td>
635+
<td><code>lhs</code></td>
636+
</tr>
574637
</tbody>
575638
</table>
576639
<p>表にあるように、C++17までの仕様に完全に準拠している実装は無かった上に各実装によって伝播仕様がバラバラだったため、この変更によって影響を受けるコードはほぼ無いと思われる。</p>
577640
<h2></h2>
641+
<h3>基本的な使い方</h3>
578642
<p><div class="yata" id="5a5b944643b7eb709ec1dc76bdaf86231a131e33"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../../iostream.html">&lt;iostream&gt;</a></span>
579643
<span class="cp">#include <a href="../../string.html">&lt;string&gt;</a></span>
580644

@@ -589,9 +653,33 @@ <h2>例</h2>
589653
<span class="p">}</span>
590654
</code></pre></div>
591655
</div></p>
592-
<h3>出力</h3>
656+
<h4>出力</h4>
593657
<p><pre><code>Hello, world!
594658
</code></pre></p>
659+
<h3>string_viewとの連結 (C++26)</h3>
660+
<p><div class="yata" id="140d8b7a3041e4dc85e9f9f24b88f3060d371279"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../../iostream.html">&lt;iostream&gt;</a></span>
661+
<span class="cp">#include <a href="../../string.html">&lt;string&gt;</a></span>
662+
<span class="cp">#include <a href="../../string_view.html">&lt;string_view&gt;</a></span>
663+
664+
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
665+
<span class="p">{</span>
666+
<span class="w"> </span><span class="n"><a href="../basic_string.html">std::string</a></span><span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Hello"</span><span class="p">;</span>
667+
<span class="w"> </span><span class="n"><a href="../../string_view/basic_string_view.html">std::string_view</a></span><span class="w"> </span><span class="n">sv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">", World!"</span><span class="p">;</span>
668+
669+
<span class="w"> </span><span class="c1">// string <span style="color:#ff0000">+</span> <a href="../../string_view/basic_string_view.html">string_view</a> (13)</span>
670+
<span class="w"> </span><span class="n"><a href="../basic_string.html">std::string</a></span><span class="w"> </span><span class="n">result1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="n"><span style="color:#ff0000">+</span></span><span class="w"> </span><span class="n">sv</span><span class="p">;</span>
671+
<span class="w"> </span><span class="n"><a href="../../iostream/cout.html">std::cout</a></span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">result1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span>
672+
673+
<span class="w"> </span><span class="c1">// string&amp;&amp; <span style="color:#ff0000">+</span> <a href="../../string_view/basic_string_view.html">string_view</a> (14)</span>
674+
<span class="w"> </span><span class="n"><a href="../basic_string.html">std::string</a></span><span class="w"> </span><span class="n">result2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><a href="../basic_string.html">std::string</a></span><span class="p">(</span><span class="s">"Hello"</span><span class="p">)</span><span class="w"> </span><span class="n"><span style="color:#ff0000">+</span></span><span class="w"> </span><span class="n">sv</span><span class="p">;</span>
675+
<span class="w"> </span><span class="n"><a href="../../iostream/cout.html">std::cout</a></span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">result2</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span>
676+
<span class="p">}</span>
677+
</code></pre></div>
678+
</div></p>
679+
<h4>出力</h4>
680+
<p><pre><code>Hello, World!
681+
Hello, World!
682+
</code></pre></p>
595683
<h2>関連項目</h2>
596684
<table border="1" bordercolor="#888" style="border-collapse:collapse">
597685
<thead>
@@ -615,10 +703,27 @@ <h2>関連項目</h2>
615703
</tr>
616704
</tbody>
617705
</table>
706+
<h2>バージョン</h2>
707+
<h3>言語</h3>
708+
<ul>
709+
<li>C++03</li>
710+
<li>C++26 : (13), (14)</li>
711+
</ul>
712+
<h3>処理系</h3>
713+
<ul>
714+
<li><a href="../../../implementation.html#clang">Clang</a>: ??</li>
715+
<li><a href="../../../implementation.html#gcc">GCC</a>: ??</li>
716+
<li><a href="../../../implementation.html#icc">ICC</a>: ??</li>
717+
<li><a href="../../../implementation.html#visual_cpp">Visual C++</a>: ??</li>
718+
</ul>
618719
<h2>参照</h2>
619720
<ul>
620721
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1165r1.html" target="_blank">P1165R1 Make stateful allocator propagation more consistent for operator+(basic_string)</a></li>
621722
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0980r1.pdf" target="_blank">P0980R1 Making <code>std::string</code> constexpr</a></li>
723+
<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2591r5.html" target="_blank">P2591R5 Concatenation of strings and string views</a><ul>
724+
<li>C++26で<code>string_view</code>との連結が追加された</li>
725+
</ul>
726+
</li>
622727
</ul></div>
623728

624729
</div>

reference/string_view/basic_string_view.html

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,12 +188,12 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2026-01-08T11:06:35">
192-
2026年01月08日 11時06分35秒
191+
<span itemprop="datePublished" content="2026-03-11T04:40:57">
192+
2026年03月11日 04時40分57秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
196-
<span itemprop="name">yoh</span>
196+
<span itemprop="name">Akira Takahashi</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -589,6 +589,23 @@ <h3>メンバ型</h3>
589589
</tbody>
590590
</table>
591591
<h2>非メンバ関数</h2>
592+
<h3>文字列連結</h3>
593+
<table border="1" bordercolor="#888" style="border-collapse:collapse">
594+
<thead>
595+
<tr>
596+
<th>名前</th>
597+
<th>説明</th>
598+
<th>対応バージョン</th>
599+
</tr>
600+
</thead>
601+
<tbody>
602+
<tr>
603+
<td><code><a href="basic_string_view/op_plus.html">operator+</a></code></td>
604+
<td>文字列の連結</td>
605+
<td>C++26</td>
606+
</tr>
607+
</tbody>
608+
</table>
592609
<h3>比較演算</h3>
593610
<table border="1" bordercolor="#888" style="border-collapse:collapse">
594611
<thead>

0 commit comments

Comments
 (0)