2

char16_t の basic_string に格納された値しか取得できない場合に、char * と wchar_t * のみを受け入れるメソッドを使用する方法は?

たとえば、cstdio で削除します。

  • cstdio の remove 関数は、char * と wchar_t * のみを受け入れます。
  • char16_t を wstring: linkに変換することはできません。
  • Char はすべての UTF-16 文字を処理できません
4

1 に答える 1

2

UTF-16 をトランスコードする必要がある場合は、関数が引数として使用する適切なエンコーディングに固執する必要がありますstd::basic_string<char16_t>。同様に、ベース シーケンスをターゲットにする場合は、エンコーディングを変更する必要があります。もちろん、エンコーディングではなく内部で文字を処理するという考えを人々が捨てたので、エンコーディング間の変更に対処するための適切な機能を提供することは有用でした. バイトと文字の間のエンコード/デコードを処理するには 2 つの方法があります。つまり、関数のマルチバイト変換ファミリー ( .std::stringchar const*wchar_tstd::codecvt<...>mbtowc()

どの変換が適しているかは、対象となる API にも依存します。すべての API が、たとえば UTF-8 を適切に処理できるわけではありません。変換には、実際にサポートされている文字の選択が含まれる場合があります。

于 2013-11-04T11:47:51.810 に答える