- codecvt[meta header]
- cpp11[meta cpp]
- cpp17deprecated[meta cpp]
- cpp26removed[meta cpp]
<codecvt>
ヘッダでは、文字コード変換のためのファセットクラスを定義する。
名前 | 説明 | 対応バージョン |
---|---|---|
codecvt_mode |
文字コード変換の設定をするための列挙型(enum) | C++11 C++17から非推奨 |
codecvt_utf8 |
UTF-8への文字コード変換(class template) | C++11 C++17から非推奨 |
codecvt_utf16 |
UTF-16への文字コード変換(class template) | C++11 C++17から非推奨 |
codecvt_utf8_utf16 |
UTF-8とUTF-16間での文字コード変換(class template) | C++11 C++17から非推奨 |
Unicodeの文字コード変換を行うこれらのクラスは、不正なコードポイントに対する安全なエラー処理の方法を提供していなかったため、セキュリティ上の欠陥があった。
仕様もあいまいであったため、不正なコードポイントに対してどのように振る舞うかも不明であった。
Unicode以外のShift_JISやBig5といった文字コードの利用は急激に減少している。標準ライブラリでの現代的なUnicodeの変換機能は非常に必要とされているが、<codecvt>
の設計はお粗末なものだった。将来より良いものを作るために、これらの機能は非推奨・削除とする。
標準ライブラリにUnicodeの文字コード変換をする代替機能はないため、他の専門特化した文字コード変換のライブラリを使用すること。
- C++11