web-dev-qa-db-ja.com

非推奨のヘッダー<codecvt>の置換

少し前景:私のタスクでは、UTF-8 XMLファイルをUTF-16に変換する必要がありました(もちろん、適切なヘッダーが必要です)。そのため、UTF-8をUTF-16に変換する通常の方法について検索したところ、<codecvt>

しかし、今では deprecated の場合、同じタスクを実行する新しい一般的な方法は何でしょうか?

(Boostを使用してもかまいませんが、それ以外はできるだけ標準ライブラリに近づけることを好みます。)

48

std::codecvtからのテンプレート<locale>自体は非推奨ではありません。 UTF-8からUTF-16の場合、std::codecvt<char16_t, char, std::mbstate_t>専門化。

ただし、std::wstring_convertおよびstd::wbuffer_convertは、標準の変換ファセットとともに非推奨です。ファセットを使用して文字列を変換する簡単な方法はありません。

したがって、Bolasが既に答えたように、自分で実装する(または、いつものようにサードパーティのライブラリを使用する)か、廃止されたAPIを使用し続けます。

18
eerorika

それについて心配しないでください。

同じ情報源 :によると

このライブラリコンポーネントは、適切な代替品が標準化されるまで、とともに、付録Dで廃止する必要があります

したがって、新しい標準化されたより安全なバージョンが完成するまで、引き続き使用できます。

23
xmllmx

新しい方法は...自分で書きます。または、廃止された機能に依存します。うまくいけば、標準化委員会は、実際に機能する代替物が存在するまでremove codecvtを実行しないことを願っています。

しかし、現時点ではありません。

4
Nicol Bolas