少し前景:私のタスクでは、UTF-8 XMLファイルをUTF-16に変換する必要がありました(もちろん、適切なヘッダーが必要です)。そのため、UTF-8をUTF-16に変換する通常の方法について検索したところ、<codecvt>
。
しかし、今では deprecated の場合、同じタスクを実行する新しい一般的な方法は何でしょうか?
(Boostを使用してもかまいませんが、それ以外はできるだけ標準ライブラリに近づけることを好みます。)
std::codecvt
からのテンプレート<locale>
自体は非推奨ではありません。 UTF-8からUTF-16の場合、std::codecvt<char16_t, char, std::mbstate_t>
専門化。
ただし、std::wstring_convert
およびstd::wbuffer_convert
は、標準の変換ファセットとともに非推奨です。ファセットを使用して文字列を変換する簡単な方法はありません。
したがって、Bolasが既に答えたように、自分で実装する(または、いつものようにサードパーティのライブラリを使用する)か、廃止されたAPIを使用し続けます。
それについて心配しないでください。
同じ情報源 :によると
このライブラリコンポーネントは、適切な代替品が標準化されるまで、とともに、付録Dで廃止する必要があります。
したがって、新しい標準化されたより安全なバージョンが完成するまで、引き続き使用できます。
新しい方法は...自分で書きます。または、廃止された機能に依存します。うまくいけば、標準化委員会は、実際に機能する代替物が存在するまでremove codecvtを実行しないことを願っています。
しかし、現時点ではありません。