68
68
69
69
</ head >
70
70
< body >
71
- < header data-kunai-mdinfo ="{"meta": {"header": ["sstream"], "namespace": ["std"], "class": ["basic_istringstream"], "id-type": ["function"]}, "sources": [{"id": "30e82642655cbc0828d793bed4c8c6a81648c883", "source": "#include <iostream>\n#include <sstream>\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(\"initial text\");\n\n int value;\n ss2 >> value;\n std::cout << value << std::endl;\n}\n"}], "page_id": ["reference", "sstream", "basic_istringstream", "op_constructor"]} ">
71
+ < header data-kunai-mdinfo ="{"meta": {"header": ["sstream"], "namespace": ["std"], "class": ["basic_istringstream"], "id-type": ["function"]}, "sources": [{"id": "dfcea72f996564a9973f939ad132b225bbaa2c78", "source": "#include <iostream>\n#include <sstream>\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(\"initial text\");\n\n std::string value;\n ss2 >> value;\n std::cout << value << std::endl;\n}\n"}, {"id": "b04c92d3f05fee1c5d8fcaa71472d30fdb7d9d59", "source": "#include <iostream>\n#include <sstream>\n#include <string_view>\n\nint main()\n{\n // \u6587\u5b57\u5217\u30ea\u30c6\u30e9\u30eb\u304b\u3089\u69cb\u7bc9\n std::istringstream ss1{\"Hello World\"};\n std::string s1;\n ss1 >> s1;\n std::cout << s1 << std::endl;\n\n // string_view\u304b\u3089\u69cb\u7bc9\n std::string_view sv = \"Hello World\";\n std::istringstream ss2{sv};\n std::string s2;\n ss2 >> s2;\n std::cout << s2 << std::endl;\n}\n"}], "page_id": ["reference", "sstream", "basic_istringstream", "op_constructor"]} ">
72
72
< nav class ="navbar navbar-default " role ="navigation ">
73
73
< div class ="container-fluid ">
74
74
< div class ="navbar-header ">
200
200
201
201
< p class ="text-right "> < small >
202
202
最終更新日時(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秒
205
205
</ span >
206
206
< br />
207
207
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
272
272
< 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 "> // (9) C++20</ span >
273
273
274
274
< span class ="n "> basic_istringstream</ span > < span class ="p "> (</ span > < span class ="n "> basic_istringstream</ span > < span class ="o "> &&</ 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 "> <</ span > < span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ 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 "> &</ 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 "> <</ span > < span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ 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 "> &</ span > < span class ="n "> t</ span > < span class ="p "> ,</ span >
284
+ < 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++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_istringstream</ 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 ="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 "> &</ span > < span class ="n "> a</ span > < span class ="p "> );</ span > < span class ="c1 "> // (13) C++26</ span >
275
291
</ code > </ pre > </ div >
276
292
</ p >
277
293
< h2 > 概要</ h2 >
278
294
< 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<const T&, basic_string_view<CharT, Traits>></ code > が< code > true</ code > であること</ li >
313
+ </ ul >
279
314
< h2 > 効果</ h2 >
280
315
< ul >
281
316
< li > (1) : 内部の< code > basic_stringbuf</ code > オブジェクトを< code > basic_stringbuf<CharT, Traits, Allocator>(ios_base::in)</ code > で構築する</ li >
282
317
< li > (2) : 内部の< code > basic_stringbuf</ code > オブジェクトを< code > basic_stringbuf<CharT, Traits, Allocator>(which | ios_base::in)</ code > で構築する</ li >
283
318
< li > (3) : 内部の< code > basic_stringbuf</ code > オブジェクトを< code > basic_stringbuf<CharT, Traits, Allocator>(s, which | ios_base::in)</ code > で構築する</ li >
284
319
< li > (4) : 内部の< code > basic_stringbuf</ code > オブジェクトを< code > basic_stringbuf<CharT, Traits, Allocator>(std::move(s), which | ios_base::in)</ code > で構築する</ li >
285
320
< li > (5) : 内部の< code > basic_stringbuf</ code > オブジェクトを< code > basic_stringbuf<CharT, Traits, Allocator>(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<CharT, Traits>(t)</ code > で文字列を初期化し、モードは< code > which | ios_base::in</ code > に設定する</ li >
324
+ < li > (12) : < code > basic_string_view<CharT, Traits>(t)</ code > で文字列を初期化し、モードは< code > ios_base::in</ code > 、アロケータは< code > a</ code > に設定する</ li >
325
+ < li > (13) : < code > basic_string_view<CharT, Traits>(t)</ code > で文字列を初期化し、モードは< code > which | ios_base::in</ code > 、アロケータは< code > a</ code > に設定する</ li >
288
326
</ ul >
289
327
< 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 "> <iostream></ 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 "> <iostream></ a > </ span > < span class ="cp "> </ span >
291
330
< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../../sstream.html "> <sstream></ a > </ span > < span class ="cp "> </ span >
292
331
293
332
< span class ="kt "> int</ span > < span class ="nf "> main</ span > < span class ="p "> ()</ span >
@@ -298,18 +337,48 @@ <h2>例</h2>
298
337
< span class ="c1 "> // (3) 文字列を指定して構築</ span >
299
338
< 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 >
300
339
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 >
302
341
< span class ="n "> ss2</ span > < span class ="o "> >></ span > < span class ="n "> value</ span > < span class ="p "> ;</ span >
303
342
< span class ="n "> < a href ="../../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="n "> value</ span > < span class ="o "> <<</ span > < span class ="n "> < a href ="../../ostream/endl.html "> std::endl</ a > </ span > < span class ="p "> ;</ span >
304
343
< span class ="p "> }</ span >
305
344
</ code > </ pre > </ div >
306
345
</ div > </ p >
307
- < h3 > 出力</ h3 >
346
+ < h4 > 出力</ h4 >
308
347
< p > < pre > < code > initial
309
348
</ 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 "> <iostream></ a > </ span > < span class ="cp "> </ span >
351
+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../../sstream.html "> <sstream></ a > </ span > < span class ="cp "> </ span >
352
+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../../string_view.html "> <string_view></ 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 "> >></ 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 "> <<</ span > < span class ="n "> s1</ span > < span class ="o "> <<</ 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 "> >></ 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 "> <<</ span > < span class ="n "> s2</ span > < span class ="o "> <<</ 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 >
310
375
< h2 > 参照</ h2 >
311
376
< ul >
312
377
< 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 >
313
382
</ ul > </ div >
314
383
315
384
</ div >
0 commit comments