2

私は現在iconv、異なるエンコーディングのドキュメントを変換するために使用しています。

このiconv()関数には次のプロトタイプがあります。

size_t iconv (
  iconv_t cd,
  const char* * inbuf,
  size_t * inbytesleft,
  char* * outbuf,
  size_t * outbytesleft
);

これまでは、タイプのバッファーを変換するだけで済みましたが、タイプのバッファーをchar*変換する必要があることにも気づきましたwchar_t*。実際、このようなバッファーiconv専用のエンコード名もあり"wchar_t"ます。このエンコードは、オペレーティングシステムの設定に適合します。つまり、私のコンピューターでは、WindowsではUCS-2を、LinuxではUTF-32を参照します。

しかし、ここに問題があります。バッファがある場合は、で使用するためのバッファwchar_t*にできますが、実装で定義された動作に直面します。キャストに関してすべてのコンパイラが同じように動作するかどうかはわかりません。reinterpret_castchar*iconv

ここで何をすればいいですか?

4

1 に答える 1

3

reinterpret_cast<char const*>安全であり、実装が定義されていません。少なくとも実際の実装ではそうではありません。

この言語では、任意のオブジェクトを文字の配列として再解釈することが明示的に許可されており、その文字の配列を取得する方法はを使用してreinterpret_castいます。

于 2011-09-03T15:44:28.557 に答える