6868
6969 </ head >
7070 < body >
71- < header data-kunai-mdinfo ="{"meta": {"header": ["sstream"], "namespace": ["std"], "class": ["basic_stringbuf"], "id-type": ["function"]}, "sources": [{"id": "0d912a277754a36380dabf7fd2005bdd54b4aced", "source": "#include <iostream>\n#include <sstream>\n\nint main()\n{\n // (1) \u30c7\u30d5\u30a9\u30eb\u30c8\u69cb\u7bc9\n std::stringbuf buf1;\n buf1.sputc('a');\n std::cout << buf1.str() << std::endl;\n\n // (3) \u6587\u5b57\u5217\u3092\u6307\u5b9a\u3057\u3066\u69cb\u7bc9\n std::stringbuf buf2(\"initial\");\n buf2.sputc('!');\n std::cout << buf2.str() << std::endl;\n}\n"}], "page_id": ["reference", "sstream", "basic_stringbuf", "op_constructor"]} ">
71+ < header data-kunai-mdinfo ="{"meta": {"header": ["sstream"], "namespace": ["std"], "class": ["basic_stringbuf"], "id-type": ["function"]}, "sources": [{"id": "0d912a277754a36380dabf7fd2005bdd54b4aced", "source": "#include <iostream>\n#include <sstream>\n\nint main()\n{\n // (1) \u30c7\u30d5\u30a9\u30eb\u30c8\u69cb\u7bc9\n std::stringbuf buf1;\n buf1.sputc('a');\n std::cout << buf1.str() << std::endl;\n\n // (3) \u6587\u5b57\u5217\u3092\u6307\u5b9a\u3057\u3066\u69cb\u7bc9\n std::stringbuf buf2(\"initial\");\n buf2.sputc('!');\n std::cout << buf2.str() << std::endl;\n}\n"}, {"id": "a07a3b80a3152b0e93756b563ed05121fd3e17d6", "source": "#include <print>\n#include <sstream>\n#include <string_view>\n\nint main()\n{\n std::string_view sv = \"from string literal\";\n std::stringbuf buf1{sv};\n std::println(\"{}\", buf1.str());\n\n std::string_view sv2 = \"from string_view\";\n std::stringbuf buf2{sv2};\n std::println(\"{}\", buf2.str());\n}\n"}], "page_id": ["reference", "sstream", "basic_stringbuf", "op_constructor"]} ">
7272 < nav class ="navbar navbar-default " role ="navigation ">
7373 < div class ="container-fluid ">
7474 < div class ="navbar-header ">
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-12T05:54:25 ">
204+ 2025年06月12日 05時54分25秒
205205 </ span >
206206 < br />
207207 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
276276
277277< span class ="n "> basic_stringbuf</ span > < span class ="p "> (</ span > < span class ="n "> basic_stringbuf</ span > < span class ="o "> &&</ span > < span class ="n "> rhs</ span > < span class ="p "> );</ span > < span class ="c1 "> // (11) C++11</ span >
278278< span class ="n "> basic_stringbuf</ span > < span class ="p "> (</ span > < span class ="n "> basic_stringbuf</ span > < span class ="o "> &&</ span > < span class ="n "> rhs</ span > < span class ="p "> ,</ span > < span class ="k "> const</ span > < span class ="n "> Allocator</ span > < span class ="o "> &</ span > < span class ="n "> a</ span > < span class ="p "> );</ span > < span class ="c1 "> // (12) C++20</ span >
279+
280+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
281+ < span class ="k "> explicit</ span >
282+ < span class ="n "> basic_stringbuf</ span > < span class ="p "> (</ span >
283+ < span class ="k "> const</ span > < span class ="n "> T</ span > < span class ="o "> &</ span > < span class ="n "> t</ span > < span class ="p "> ,</ span >
284+ < 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 ="o "> |</ span > < span class ="n "> < a href ="../../ios/ios_base.html "> ios_base</ a > </ span > < span class ="o "> ::</ span > < span class ="n "> out</ span > < span class ="p "> );</ span > < span class ="c1 "> // (13) C++26</ span >
285+
286+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
287+ < span class ="n "> basic_stringbuf</ span > < span class ="p "> (</ span >
288+ < span class ="k "> const</ span > < span class ="n "> T</ span > < span class ="o "> &</ span > < span class ="n "> t</ span > < span class ="p "> ,</ span >
289+ < span class ="k "> const</ span > < span class ="n "> Allocator</ span > < span class ="o "> &</ span > < span class ="n "> a</ span > < span class ="p "> );</ span > < span class ="c1 "> // (14) C++26</ span >
290+
291+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
292+ < span class ="n "> basic_stringbuf</ span > < span class ="p "> (</ span >
293+ < span class ="k "> const</ span > < span class ="n "> T</ span > < span class ="o "> &</ span > < span class ="n "> t</ span > < span class ="p "> ,</ span >
294+ < 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 >
295+ < span class ="k "> const</ span > < span class ="n "> Allocator</ span > < span class ="o "> &</ span > < span class ="n "> a</ span > < span class ="p "> );</ span > < span class ="c1 "> // (15) C++26</ span >
279296</ code > </ pre > </ div >
280297</ p >
281298< h2 > 概要</ h2 >
282299< p > < code > basic_stringbuf</ code > オブジェクトを構築する。</ p >
300+ < ul >
301+ < li > (1) : デフォルトコンストラクタ</ li >
302+ < li > (2) : 指定されたモードで構築する</ li >
303+ < li > (3) : < code > < a href ="../../string/basic_string.html "> std::basic_string</ a > </ code > オブジェクトのコピーと、指定されたモードで構築する</ li >
304+ < li > (4) : モードとアロケータを指定して構築する</ li >
305+ < li > (5) : アロケータを指定して構築する</ li >
306+ < li > (6) : < code > < a href ="../../string/basic_string.html "> std::basic_string</ a > </ code > オブジェクトのコピーと、アロケータを指定して構築する</ li >
307+ < li > (7) : < code > < a href ="../../string/basic_string.html "> std::basic_string</ a > </ code > オブジェクトのコピー、モード、アロケータを指定して構築する</ li >
308+ < li > (8) : < code > Allocator</ code > に変換可能なアロケータ型をもつ< code > std::basic_string</ code > オブジェクトのコピーと、指定されたモードで構築する</ li >
309+ < li > (9) : < code > Allocator</ code > に変換可能なアロケータ型をもつ< code > std::basic_string</ code > オブジェクトのコピーと、アロケータを指定して構築する</ li >
310+ < li > (10) : < code > Allocator</ code > に変換可能なアロケータ型をもつ< code > std::basic_string</ code > オブジェクトのコピー、モード、アロケータを指定して構築する</ li >
311+ < li > (11) : ムーブコンストラクタ</ li >
312+ < li > (12) : ムーブコンストラクタでアロケータを指定して構築する</ li >
313+ < li > (13) : < code > < a href ="../../string_view/basic_string_view.html "> basic_string_view</ a > </ code > に変換可能な文字列を初期化し、モードを設定する</ li >
314+ < li > (14) : < code > < a href ="../../string_view/basic_string_view.html "> basic_string_view</ a > </ code > に変換可能な文字列を初期化、アロケータを設定する</ li >
315+ < li > (15) : < code > < a href ="../../string_view/basic_string_view.html "> basic_string_view</ a > </ code > に変換可能な文字列を初期化し、モードとアロケータを設定する</ li >
316+ </ ul >
317+ < h2 > < a class ="cpprefjp-defined-word " data-desc ="関数等の意味論を構成する要素の1つ。Constraints。関数であればオーバーロード解決に参加するための条件、それ以外であれば受け付ける型の条件 "> テンプレートパラメータ制約</ a > </ h2 >
318+ < ul >
319+ < li > (13), (14), (15) : < code > is_convertible_v<const T&, basic_string_view<CharT, Traits>></ code > が< code > true</ code > であること</ li >
320+ </ ul >
283321< h2 > 効果</ h2 >
284322< ul >
285323< li > (1) : 内部の文字列バッファを空にし、モードは< code > ios_base::in | ios_base::out</ code > に設定する</ li >
286324< li > (2) : 内部の文字列バッファを空にし、モードは< code > which</ code > に設定する</ li >
287325< li > (3) : 内部の文字列バッファを< code > s</ code > のコピー、モードは< code > which</ code > に設定する</ li >
288326< li > (4) : 内部の文字列バッファを< code > std::move(s)</ code > で、モードは< code > which</ code > に設定する</ li >
289327< li > (5) : 内部の文字列バッファを空にし、モードは< code > which</ code > 、アロケータは< code > a</ code > に設定する</ li >
290- < li > (6), (7), (8), (9), (10), (11) : 各引数は内部状態の初期化に使用される</ li >
291- < li > (12) : < code > rhs</ code > から< code > basic_stringbuf</ code > オブジェクトをムーブ構築する</ li >
292- < li > (13) : < code > rhs</ code > から< code > basic_stringbuf</ code > オブジェクトをムーブ構築し、アロケータは< code > a</ code > を使用する</ li >
328+ < li > (6), (7), (8), (9), (10) : 各引数は内部状態の初期化に使用される</ li >
329+ < li > (11) : < code > rhs</ code > から< code > basic_stringbuf</ code > オブジェクトをムーブ構築する</ li >
330+ < li > (12) : < code > rhs</ code > から< code > basic_stringbuf</ code > オブジェクトをムーブ構築し、アロケータは< code > a</ code > を使用する</ li >
331+ < li > (13) : < code > basic_string_view<CharT, Traits>(t)</ code > で文字列を初期化し、モードは< code > which</ code > に設定する</ li >
332+ < li > (14) : < code > basic_string_view<CharT, Traits>(t)</ code > で文字列を初期化し、モードは< code > ios_base::in | ios_base::out</ code > 、アロケータは< code > a</ code > に設定する</ li >
333+ < li > (15) : < code > basic_string_view<CharT, Traits>(t)</ code > で文字列を初期化し、モードは< code > which</ code > 、アロケータは< code > a</ code > に設定する</ li >
293334</ ul >
294335< h2 > 例</ h2 >
336+ < h3 > 基本的な使い方</ h3 >
295337< p > < div class ="yata " id ="0d912a277754a36380dabf7fd2005bdd54b4aced "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
296338< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../../sstream.html "> <sstream></ a > </ span > < span class ="cp "> </ span >
297339
@@ -309,13 +351,38 @@ <h2>例</h2>
309351< span class ="p "> }</ span >
310352</ code > </ pre > </ div >
311353</ div > </ p >
312- < h3 > 出力</ h3 >
354+ < h4 > 出力</ h4 >
313355< p > < pre > < code > a
314356initial!
315357</ code > </ pre > </ p >
358+ < h4 > string_viewからの構築 (C++26)</ h4 >
359+ < p > < div class ="yata " id ="a07a3b80a3152b0e93756b563ed05121fd3e17d6 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../../print.html "> <print></ a > </ span > < span class ="cp "> </ span >
360+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../../sstream.html "> <sstream></ a > </ span > < span class ="cp "> </ span >
361+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../../string_view.html "> <string_view></ a > </ span > < span class ="cp "> </ span >
362+
363+ < span class ="kt "> int</ span > < span class ="nf "> main</ span > < span class ="p "> ()</ span >
364+ < span class ="p "> {</ span >
365+ < 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 "> "from string literal"</ span > < span class ="p "> ;</ span >
366+ < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> stringbuf</ span > < span class ="n "> buf1</ span > < span class ="p "> {</ span > < span class ="n "> sv</ span > < span class ="p "> };</ span >
367+ < span class ="n "> < a href ="../../print/println.html "> std::println</ a > </ span > < span class ="p "> (</ span > < span class ="s "> "{}"</ span > < span class ="p "> ,</ span > < span class ="n "> buf1</ span > < span class ="p "> .</ span > < span class ="n "> str</ span > < span class ="p "> ());</ span >
368+
369+ < span class ="n "> < a href ="../../string_view/basic_string_view.html "> std::string_view</ a > </ span > < span class ="n "> sv2</ span > < span class ="o "> =</ span > < span class ="s "> "from < a href ="../../string_view/basic_string_view.html "> string_view</ a > "</ span > < span class ="p "> ;</ span >
370+ < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> stringbuf</ span > < span class ="n "> buf2</ span > < span class ="p "> {</ span > < span class ="n "> sv2</ span > < span class ="p "> };</ span >
371+ < span class ="n "> < a href ="../../print/println.html "> std::println</ a > </ span > < span class ="p "> (</ span > < span class ="s "> "{}"</ span > < span class ="p "> ,</ span > < span class ="n "> buf2</ span > < span class ="p "> .</ span > < span class ="n "> str</ span > < span class ="p "> ());</ span >
372+ < span class ="p "> }</ span >
373+ </ code > </ pre > </ div >
374+ </ div > </ p >
375+ < h4 > 出力</ h4 >
376+ < p > < pre > < code > from string literal
377+ from < a href ="../../string_view/basic_string_view.html "> string_view</ a >
378+ </ code > </ pre > </ p >
316379< h2 > 参照</ h2 >
317380< ul >
318381< 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 >
382+ < 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 >
383+ < li > C++26で< code > < a href ="../../string_view/basic_string_view.html "> std::string_view</ a > </ code > に対応した</ li >
384+ </ ul >
385+ </ li >
319386</ ul > </ div >
320387
321388 </ div >
0 commit comments