Skip to content

Commit 69449e1

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 7cb9a25 commit 69449e1

File tree

10 files changed

+1412
-433
lines changed

10 files changed

+1412
-433
lines changed

reference/sstream/basic_istringstream/op_constructor.html

Lines changed: 77 additions & 8 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;sstream&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;class&#34;: [&#34;basic_istringstream&#34;], &#34;id-type&#34;: [&#34;function&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;30e82642655cbc0828d793bed4c8c6a81648c883&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;sstream&gt;\n\nint main()\n{\n // (1) \u30c7\u30d5\u30a9\u30eb\u30c8\u69cb\u7bc9\n std::istringstream ss1;\n\n // (3) \u6587\u5b57\u5217\u3092\u6307\u5b9a\u3057\u3066\u69cb\u7bc9\n std::istringstream ss2(\&#34;initial text\&#34;);\n\n int value;\n ss2 &gt;&gt; value;\n std::cout &lt;&lt; value &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;sstream&#34;, &#34;basic_istringstream&#34;, &#34;op_constructor&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;sstream&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;class&#34;: [&#34;basic_istringstream&#34;], &#34;id-type&#34;: [&#34;function&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;dfcea72f996564a9973f939ad132b225bbaa2c78&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;sstream&gt;\n\nint main()\n{\n // (1) \u30c7\u30d5\u30a9\u30eb\u30c8\u69cb\u7bc9\n std::istringstream ss1;\n\n // (3) \u6587\u5b57\u5217\u3092\u6307\u5b9a\u3057\u3066\u69cb\u7bc9\n std::istringstream ss2(\&#34;initial text\&#34;);\n\n std::string value;\n ss2 &gt;&gt; value;\n std::cout &lt;&lt; value &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;b04c92d3f05fee1c5d8fcaa71472d30fdb7d9d59&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;sstream&gt;\n#include &lt;string_view&gt;\n\nint main()\n{\n // \u6587\u5b57\u5217\u30ea\u30c6\u30e9\u30eb\u304b\u3089\u69cb\u7bc9\n std::istringstream ss1{\&#34;Hello World\&#34;};\n std::string s1;\n ss1 &gt;&gt; s1;\n std::cout &lt;&lt; s1 &lt;&lt; std::endl;\n\n // string_view\u304b\u3089\u69cb\u7bc9\n std::string_view sv = \&#34;Hello World\&#34;;\n std::istringstream ss2{sv};\n std::string s2;\n ss2 &gt;&gt; s2;\n std::cout &lt;&lt; s2 &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;sstream&#34;, &#34;basic_istringstream&#34;, &#34;op_constructor&#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-06-05T03:37:16">
204-
2025年06月05日 03時37分16秒
203+
<span itemprop="datePublished" content="2025-06-12T08:40:59">
204+
2025年06月12日 08時40分59秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -272,22 +272,61 @@
272272
<span class="k">const</span> <span class="n">Allocator</span><span class="o">&amp;</span> <span class="n">a</span><span class="p">);</span> <span class="c1">// (9) C++20</span>
273273

274274
<span class="n">basic_istringstream</span><span class="p">(</span><span class="n">basic_istringstream</span><span class="o">&amp;&amp;</span> <span class="n">rhs</span><span class="p">);</span> <span class="c1">// (10) C++11</span>
275+
276+
<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
277+
<span class="k">explicit</span> <span class="n">basic_istringstream</span><span class="p">(</span>
278+
<span class="k">const</span> <span class="n">T</span><span class="o">&amp;</span> <span class="n">t</span><span class="p">,</span>
279+
<span class="n"><a href="../../ios/ios_base.html">ios_base</a></span><span class="o">::</span><span class="n">openmode</span> <span class="n">which</span> <span class="o">=</span> <span class="n"><a href="../../ios/ios_base.html">ios_base</a></span><span class="o">::</span><span class="n">in</span><span class="p">);</span> <span class="c1">// (11) C++26</span>
280+
281+
<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
282+
<span class="n">basic_istringstream</span><span class="p">(</span>
283+
<span class="k">const</span> <span class="n">T</span><span class="o">&amp;</span> <span class="n">t</span><span class="p">,</span>
284+
<span class="k">const</span> <span class="n">Allocator</span><span class="o">&amp;</span> <span class="n">a</span><span class="p">);</span> <span class="c1">// (12) C++26</span>
285+
286+
<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
287+
<span class="n">basic_istringstream</span><span class="p">(</span>
288+
<span class="k">const</span> <span class="n">T</span><span class="o">&amp;</span> <span class="n">t</span><span class="p">,</span>
289+
<span class="n"><a href="../../ios/ios_base.html">ios_base</a></span><span class="o">::</span><span class="n">openmode</span> <span class="n">which</span><span class="p">,</span>
290+
<span class="k">const</span> <span class="n">Allocator</span><span class="o">&amp;</span> <span class="n">a</span><span class="p">);</span> <span class="c1">// (13) C++26</span>
275291
</code></pre></div>
276292
</p>
277293
<h2>概要</h2>
278294
<p><code>basic_istringstream</code>オブジェクトを構築する。</p>
295+
<ul>
296+
<li>(1) : デフォルトコンストラクタ</li>
297+
<li>(2) : 指定されたモードで構築する</li>
298+
<li>(3) : 入力文字列として<code><a href="../../string/basic_string.html">std::basic_string</a></code>オブジェクトのコピーを指定して構築する</li>
299+
<li>(4) : 指定されたモードとアロケータで構築する</li>
300+
<li>(5) : 入力文字列として<code><a href="../../string/basic_string.html">std::basic_string</a></code>オブジェクトのコピーと、アロケータを指定して構築する</li>
301+
<li>(6) : 入力文字列として<code><a href="../../string/basic_string.html">std::basic_string</a></code>オブジェクトのコピー、モード、アロケータを指定して構築する</li>
302+
<li>(7) : 入力文字列として<code>Allocator</code>に変換可能なアロケータをもつ<code><a href="../../string/basic_string.html">std::basic_string</a></code>オブジェクトのコピーと、モードを指定して構築する</li>
303+
<li>(8) : 入力文字列として<code>Allocator</code>に変換可能なアロケータをもつ<code><a href="../../string/basic_string.html">std::basic_string</a></code>オブジェクトのコピーと、アロケータを指定して構築する</li>
304+
<li>(9) : 入力文字列として<code>Allocator</code>に変換可能なアロケータをもつ<code><a href="../../string/basic_string.html">std::basic_string</a></code>オブジェクトのコピー、モード、アロケータを指定して構築する</li>
305+
<li>(10) : ムーブコンストラクタ</li>
306+
<li>(11) : 入力文字列として<code><a href="../../string_view/basic_string_view.html">std::basic_string_view</a></code>に変換可能な文字列と、モードを指定して構築する</li>
307+
<li>(12) : 入力文字列として<code><a href="../../string_view/basic_string_view.html">std::basic_string_view</a></code>に変換可能な文字列と、アロケータを指定して構築する</li>
308+
<li>(13) : 入力文字列として<code><a href="../../string_view/basic_string_view.html">std::basic_string_view</a></code>に変換可能な文字列、モード、アロケータを指定して構築する</li>
309+
</ul>
310+
<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Constraints。関数であればオーバーロード解決に参加するための条件、それ以外であれば受け付ける型の条件">テンプレートパラメータ制約</a></h2>
311+
<ul>
312+
<li>(11), (12), (13) : <code>is_convertible_v&lt;const T&amp;, basic_string_view&lt;CharT, Traits&gt;&gt;</code><code>true</code>であること</li>
313+
</ul>
279314
<h2>効果</h2>
280315
<ul>
281316
<li>(1) : 内部の<code>basic_stringbuf</code>オブジェクトを<code>basic_stringbuf&lt;CharT, Traits, Allocator&gt;(ios_base::in)</code>で構築する</li>
282317
<li>(2) : 内部の<code>basic_stringbuf</code>オブジェクトを<code>basic_stringbuf&lt;CharT, Traits, Allocator&gt;(which | ios_base::in)</code>で構築する</li>
283318
<li>(3) : 内部の<code>basic_stringbuf</code>オブジェクトを<code>basic_stringbuf&lt;CharT, Traits, Allocator&gt;(s, which | ios_base::in)</code>で構築する</li>
284319
<li>(4) : 内部の<code>basic_stringbuf</code>オブジェクトを<code>basic_stringbuf&lt;CharT, Traits, Allocator&gt;(std::move(s), which | ios_base::in)</code>で構築する</li>
285320
<li>(5) : 内部の<code>basic_stringbuf</code>オブジェクトを<code>basic_stringbuf&lt;CharT, Traits, Allocator&gt;(which | ios_base::in, a)</code>で構築する</li>
286-
<li>(6), (7), (8), (9), (10) : 各引数が対応する<code>basic_stringbuf</code>のコンストラクタに渡される</li>
287-
<li>(11) : <code>rhs</code>から<code>basic_istringstream</code>オブジェクトをムーブ構築する</li>
321+
<li>(6), (7), (8), (9) : 各引数が対応する<code>basic_stringbuf</code>のコンストラクタに渡される</li>
322+
<li>(10) : <code>rhs</code>から<code>basic_istringstream</code>オブジェクトをムーブ構築する</li>
323+
<li>(11) : <code>basic_string_view&lt;CharT, Traits&gt;(t)</code>で文字列を初期化し、モードは<code>which | ios_base::in</code>に設定する</li>
324+
<li>(12) : <code>basic_string_view&lt;CharT, Traits&gt;(t)</code>で文字列を初期化し、モードは<code>ios_base::in</code>、アロケータは<code>a</code>に設定する</li>
325+
<li>(13) : <code>basic_string_view&lt;CharT, Traits&gt;(t)</code>で文字列を初期化し、モードは<code>which | ios_base::in</code>、アロケータは<code>a</code>に設定する</li>
288326
</ul>
289327
<h2></h2>
290-
<p><div class="yata" id="30e82642655cbc0828d793bed4c8c6a81648c883"><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>
328+
<h3>基本的な使い方</h3>
329+
<p><div class="yata" id="dfcea72f996564a9973f939ad132b225bbaa2c78"><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>
291330
<span class="cp">#include</span> <span class="cpf"><a href="../../sstream.html">&lt;sstream&gt;</a></span><span class="cp"></span>
292331

293332
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
@@ -298,18 +337,48 @@ <h2>例</h2>
298337
<span class="c1">// (3) 文字列を指定して構築</span>
299338
<span class="n"><a href="../basic_istringstream.html">std::istringstream</a></span> <span class="n">ss2</span><span class="p">(</span><span class="s">"initial text"</span><span class="p">);</span>
300339

301-
<span class="kt">int</span> <span class="n">value</span><span class="p">;</span>
340+
<span class="n"><a href="../../string/basic_string.html">std::string</a></span> <span class="n">value</span><span class="p">;</span>
302341
<span class="n">ss2</span> <span class="o">&gt;&gt;</span> <span class="n">value</span><span class="p">;</span>
303342
<span class="n"><a href="../../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="n">value</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../ostream/endl.html">std::endl</a></span><span class="p">;</span>
304343
<span class="p">}</span>
305344
</code></pre></div>
306345
</div></p>
307-
<h3>出力</h3>
346+
<h4>出力</h4>
308347
<p><pre><code>initial
309348
</code></pre></p>
349+
<h3>string_viewからの構築 (C++26)</h3>
350+
<p><div class="yata" id="b04c92d3f05fee1c5d8fcaa71472d30fdb7d9d59"><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>
351+
<span class="cp">#include</span> <span class="cpf"><a href="../../sstream.html">&lt;sstream&gt;</a></span><span class="cp"></span>
352+
<span class="cp">#include</span> <span class="cpf"><a href="../../string_view.html">&lt;string_view&gt;</a></span><span class="cp"></span>
353+
354+
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
355+
<span class="p">{</span>
356+
<span class="c1">// 文字列リテラルから構築</span>
357+
<span class="n"><a href="../basic_istringstream.html">std::istringstream</a></span> <span class="n">ss1</span><span class="p">{</span><span class="s">"Hello World"</span><span class="p">};</span>
358+
<span class="n"><a href="../../string/basic_string.html">std::string</a></span> <span class="n">s1</span><span class="p">;</span>
359+
<span class="n">ss1</span> <span class="o">&gt;&gt;</span> <span class="n">s1</span><span class="p">;</span>
360+
<span class="n"><a href="../../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="n">s1</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../ostream/endl.html">std::endl</a></span><span class="p">;</span>
361+
362+
<span class="c1">// <a href="../../string_view/basic_string_view.html">string_view</a>から構築</span>
363+
<span class="n"><a href="../../string_view/basic_string_view.html">std::string_view</a></span> <span class="n">sv</span> <span class="o">=</span> <span class="s">"Hello World"</span><span class="p">;</span>
364+
<span class="n"><a href="../basic_istringstream.html">std::istringstream</a></span> <span class="n">ss2</span><span class="p">{</span><span class="n">sv</span><span class="p">};</span>
365+
<span class="n"><a href="../../string/basic_string.html">std::string</a></span> <span class="n">s2</span><span class="p">;</span>
366+
<span class="n">ss2</span> <span class="o">&gt;&gt;</span> <span class="n">s2</span><span class="p">;</span>
367+
<span class="n"><a href="../../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="n">s2</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../ostream/endl.html">std::endl</a></span><span class="p">;</span>
368+
<span class="p">}</span>
369+
</code></pre></div>
370+
</div></p>
371+
<h4>出力</h4>
372+
<p><pre><code>Hello
373+
Hello
374+
</code></pre></p>
310375
<h2>参照</h2>
311376
<ul>
312377
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0408r7.pdf" target="_blank">P0408R7 Efficient Access to <code>basic_stringbuf</code>'s Buffer</a></li>
378+
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2495r3.pdf" target="_blank">P2495R3 Interfacing stringstreams with <code>string_view</code></a><ul>
379+
<li>C++26で<code><a href="../../string_view/basic_string_view.html">std::string_view</a></code>に対応した</li>
380+
</ul>
381+
</li>
313382
</ul></div>
314383

315384
</div>

0 commit comments

Comments
 (0)