- locale[meta header]
- std[meta namespace]
- class template[meta id-type]
- cpp11[meta cpp]
- cpp17deprecated[meta cpp]
- cpp26removed[meta cpp]
namespace std {
template <class Codecvt,
class Elem = wchar_t,
class Tr = std::char_traits<Elem> >
class wbuffer_convert : public std::basic_streambuf<Elem, Tr>;
}- basic_streambuf[link ../streambuf/basic_streambuf.md]
(ここに、クラスの概要を記載する)
Unicodeの文字コード変換を行うこれらのクラスは、不正なコードポイントに対する安全なエラー処理の方法を提供していなかったため、セキュリティ上の欠陥があった。
仕様もあいまいであったため、不正なコードポイントに対してどのように振る舞うかも不明であった。
Unicode以外のShift_JISやBig5といった文字コードの利用が急激に減少している。標準ライブラリでの現代的なUnicodeの変換機能は非常に必要とされているが、<codecvt>とそれに関連する機能の設計はお粗末なものだった。将来より良いものを作るために、これらの機能は非推奨・削除とする。
標準ライブラリにUnicodeの文字コード変換をする代替機能はないため、他の専門特化した文字コード変換のライブラリを使用すること。
| 名前 | 説明 |
|---|---|
(constructor) |
コンストラクタ |
rdbuf |
ストリームバッファのリダイレクト |
state |
変換の状態を取得する |
| 名前 | 説明 |
|---|---|
state_type |
ストリームのマルチバイト文字の変換の状態を表す型 Codecvt::state_type |
- C++11
- Clang: 3.0 [mark verified], 3.1 [mark verified], 3.2 [mark verified], 3.3 [mark verified], 3.4 [mark verified]
- GCC:
- Visual C++: 2010 [mark verified], 2012 [mark verified], 2013 [mark verified]
- N2007 Proposed Library Additions for Code Conversion
- P0618R0 Deprecating
<codecvt> - P2872R3 Remove
wstring_convertFrom C++26 - LWG Issue 1252.
wbuffer_convert::state_typeinconsistency- C++11で、
state_typeの定義がTr::state_typeからCodecvt::state_typeへ修正された。変換状態はcodecvt側の型であるため
- C++11で、