# 第 19 章: コード変換ファセットの定義

> - 19.1 コード変換のカテゴリ
> - 19.2 例 1: 1 バイト文字コード変換の定義 (ASCII <-> EBCDIC)
>   - 19.2.1 新しいファセット型の派生
>   - 19.2.2 新しいファセット型の特殊化とメンバーファセットの実装
>   - 19.2.3 新しいコード変換ファセットの使用
> - 19.3 コード変換ファセットのエラー指示
> - 19.4 例 2: 複数バイト文字コード変換の定義 (JIS <-> Unicode)
>   - 19.4.1 新しい変換状態型の定義
>   - 19.4.2 新しい文字特性型の定義
>   - 19.4.3 コード変換ファセットの定義
>   - 19.4.4 新しいコード変換ファセットの使用

ファイルストリームバッファ は、外部デバイスとの文字の移送に使用します。一般に、プログラムの内部と外部デバイスとでは、使用する文字の符号化が異なります。したがって、ファイルストリームバッファ では、外部デバイスに対する読み書きのたびに別の符号に文字を変換する必要があります (2.3 節では、 文字の符号化の内容の詳しい説明と、典型的なコード変換の例を 2 つ紹介しています。この章では、コード変換を実装方法を紹介しますが、コード変換について不明な点がある場合は、実装の説明に入る前に2.3 節を参照してください)。

コード変換は、ファイルストリームバッファ自体が行うわけではありません。コード変換機能はコード変換ファセットにカプセル化されます。ファイルストリームバッファで文字を変換するときは、ファイルストリームバッファから呼び出されたバッファのロケールのコード変換ファセットが、その都度、実際のコード変換を行います。そのため、ファイルストリームバッファとコード変換ファセットは、密接な連携処理をすることになり、ファイルストリームバッファ は、そのロケールのコード変換ファセットに依存することになります。

このように、処理の分担がはっきり分かれているため、ファイルストリームのクラスを変更せずに、ファイルストリームの動作の基本的な変更をすることができます。したがって、必要なのは、それぞれのコード変換ファセットを用意することだけです。これで、通常のファイルストリームから目的のファイルストリームに、たとえば、メインフレームのファイルシステムにある EBCDIC ファイルから内部処理用の ASCII 文字のストリームへ、といった変換が行われます。

ただし、コード変換ファセットを実装するには、ファイルストリームバッファ とコード変換ファセット間の対話をよく理解する必要があります。この章では、2 つの例をもとにその対話の基本について説明します。

例に進む前に、さまざまな種類のコード変換の概要を紹介します。後で説明しますが、コード変換の種類によってその実装方法も異なります。

Copyright (c) 1998, Rogue Wave Software, Inc.
このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。

OEM リリース, 1998 年 6 月