|
68 | 68 |
|
69 | 69 | </head>
|
70 | 70 | <body>
|
71 |
| -<header data-kunai-mdinfo="{"meta": {"header": ["locale"], "namespace": ["std"], "id-type": ["class template"], "cpp": ["cpp11", "cpp17deprecated"]}, "sources": [{"id": "e44d0d02129c7cf6a98eb13dabc1466adc4ab61c", "source": "#include <iostream>\n#include <string>\n#include <locale>\n#include <codecvt>\n\nint main()\n{\n // UTF-8\u3068UTF-32\u306e\u76f8\u4e92\u5909\u63db\u3092\u884c\u3046\u30b3\u30f3\u30d0\u30fc\u30bf\u30fc\n std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> converter;\n\n // UTF-8\u304b\u3089UTF-32\u306b\u5909\u63db\n std::string u8str = u8\"\u3042\u3044\u3046\u3048\u304a\";\n std::u32string u32str = converter.from_bytes(u8str);\n\n // \u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u6570\u3092\u53d6\u5f97\n std::size_t codepoint_count = u32str.size();\n std::cout << codepoint_count << std::endl;\n}\n"}], "page_id": ["reference", "locale", "wstring_convert"]}"> |
| 71 | +<header data-kunai-mdinfo="{"meta": {"header": ["locale"], "namespace": ["std"], "id-type": ["class template"], "cpp": ["cpp11", "cpp17deprecated", "cpp26removed"]}, "sources": [{"id": "e44d0d02129c7cf6a98eb13dabc1466adc4ab61c", "source": "#include <iostream>\n#include <string>\n#include <locale>\n#include <codecvt>\n\nint main()\n{\n // UTF-8\u3068UTF-32\u306e\u76f8\u4e92\u5909\u63db\u3092\u884c\u3046\u30b3\u30f3\u30d0\u30fc\u30bf\u30fc\n std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> converter;\n\n // UTF-8\u304b\u3089UTF-32\u306b\u5909\u63db\n std::string u8str = u8\"\u3042\u3044\u3046\u3048\u304a\";\n std::u32string u32str = converter.from_bytes(u8str);\n\n // \u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u6570\u3092\u53d6\u5f97\n std::size_t codepoint_count = u32str.size();\n std::cout << codepoint_count << std::endl;\n}\n"}], "page_id": ["reference", "locale", "wstring_convert"]}"> |
72 | 72 | <nav class="navbar navbar-default" role="navigation">
|
73 | 73 | <div class="container-fluid">
|
74 | 74 | <div class="navbar-header">
|
|
188 | 188 |
|
189 | 189 | <p class="text-right"><small>
|
190 | 190 | 最終更新日時(UTC):
|
191 |
| - <span itemprop="datePublished" content="2024-06-11T13:45:38"> |
192 |
| - 2024年06月11日 13時45分38秒 |
| 191 | + <span itemprop="datePublished" content="2024-08-09T03:46:09"> |
| 192 | + 2024年08月09日 03時46分09秒 |
193 | 193 | </span>
|
194 | 194 | <br/>
|
195 | 195 | <span itemprop="author" itemscope itemtype="http://schema.org/Person">
|
|
212 | 212 | <div class="row">
|
213 | 213 | <div class="col-sm-12 content-body">
|
214 | 214 |
|
215 |
| - <div class="identifier-type">class template</div><div class="header"><locale></div><h1 itemprop="name"><span class="namespace" title="namespace std">std::</span><span class="token">wstring_convert</span><span class="cpp cpp11" title="C++11で追加">(C++11)</span><span class="cpp cpp17deprecated text-warning" title="C++17で非推奨">(C++17で非推奨)</span></h1> |
| 215 | + <div class="identifier-type">class template</div><div class="header"><locale></div><h1 itemprop="name"><span class="namespace" title="namespace std">std::</span><span class="token">wstring_convert</span><span class="cpp cpp11" title="C++11で追加">(C++11)</span><span class="cpp cpp17deprecated text-warning" title="C++17で非推奨">(C++17で非推奨)</span><span class="cpp cpp26removed text-danger" title="C++26で削除">(C++26で削除)</span></h1> |
216 | 216 | <div itemprop="articleBody"><p><div class="codehilite"><pre><span></span><code><span class="k">namespace</span> <span class="n">std</span> <span class="p">{</span>
|
217 | 217 | <span class="k">template</span> <span class="o"><</span><span class="k">class</span> <span class="nc">Codecvt</span><span class="p">,</span> <span class="k">class</span> <span class="nc">Elem</span> <span class="o">=</span> <span class="kt">wchar_t</span><span class="p">,</span>
|
218 | 218 | <span class="k">class</span> <span class="nc">Wide_alloc</span> <span class="o">=</span> <span class="n"><a href="../memory/allocator.html">std::allocator</a></span><span class="o"><</span><span class="n">Elem</span><span class="o">></span><span class="p">,</span>
|
@@ -258,10 +258,10 @@ <h2>概要</h2>
|
258 | 258 | </tr>
|
259 | 259 | </tbody>
|
260 | 260 | </table>
|
261 |
| -<h2>非推奨の詳細</h2> |
| 261 | +<h2>非推奨・削除の詳細</h2> |
262 | 262 | <p>Unicodeの文字コード変換を行うこれらのクラスは、不正なコードポイントに対する安全なエラー処理の方法を提供していなかったため、セキュリティ上の欠陥があった。</p>
|
263 | 263 | <p>仕様もあいまいであったため、不正なコードポイントに対してどのように振る舞うかも不明であった。</p>
|
264 |
| -<p>Unicode以外のShift_JISやBig5といった文字コードの利用が急激に減少している。標準ライブラリでの現代的なUnicodeの変換機能は非常に必要とされているが、<code><a href="../codecvt.html"><codecvt></a></code>とそれに関連する機能の設計はお粗末なものだった。将来より良いものを作るために、これらの機能は非推奨とする。</p> |
| 264 | +<p>Unicode以外のShift_JISやBig5といった文字コードの利用が急激に減少している。標準ライブラリでの現代的なUnicodeの変換機能は非常に必要とされているが、<code><a href="../codecvt.html"><codecvt></a></code>とそれに関連する機能の設計はお粗末なものだった。将来より良いものを作るために、これらの機能は非推奨・削除とする。</p> |
265 | 265 | <p>標準ライブラリにUnicodeの文字コード変換をする代替機能はないため、他の専門特化した文字コード変換のライブラリを使用すること。</p>
|
266 | 266 | <h2>メンバ関数</h2>
|
267 | 267 | <table border="1" bordercolor="#888" style="border-collapse:collapse">
|
@@ -382,6 +382,7 @@ <h2>参照</h2>
|
382 | 382 | <ul>
|
383 | 383 | <li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2007.html" target="_blank">N2007 Proposed Library Additions for Code Conversion</a></li>
|
384 | 384 | <li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0618r0.html" target="_blank">P0618R0 Deprecating <code><codecvt></code></a></li>
|
| 385 | +<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2872r3.pdf" target="_blank">P2872R3 Remove <code>wstring_convert</code> From C++26</a></li> |
385 | 386 | </ul></div>
|
386 | 387 |
|
387 | 388 | </div>
|
|
0 commit comments