## 19.3 コード変換ファセットのエラー指示

ファイルストリームバッファの処理は、そのロケールのコード変換ファセットと連携して行われるため、相互の情報のやりとりを理解する必要があります。外部デバイスに対する書き込みでは、ファイルストリームバッファから内部文字バッファの内容の一部または全体が、コード変換ファセット、つまり、その `out()` 関数に転送されます。コード変換ファセットが受け取るのは、外部デバイスに書き込むことのできる変換済みの文字シーケンスです。外部ファイルからの読み取りでは、この逆の処理が `in()` 関数によって行われます。

ファイルストリームバッファとコード変換ファセットを効果的な連携処理するには、2 つのメイン関数 `in()` と `out()` によるエラー状態の指示が、ファイルストリームバッファに必要な形式で行われる必要があります。

`in()` と `out()` のリターンコードには、次の 4 通りがあります。

- 変換が正しく行われると `ok` が返ります。
- 入力シーケンスの最後 `[from,from_end)` まで変換が行われると`partial` が返り、新しい文字を作成する準備が整います。`partial` への返事としてファイルストリームバッファから、さらに文字が提供され、変換を完了するためにコード変換ファセットが再び呼び出されます。29
- 変換規則に対する違反があると `error` が返ります。これは、変換対象の文字シーケンスが規則に違反していて、認識できず、変換もできないことを表します。この場合、ファイルストリームバッファによる処理はすべて中止され、ファイルストリームの状態は `badbit` に設定され、必要に応じて例外が送出されます。
- 変換が必要なければ `noconv` が返ります。

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

OEM リリース, 1998 年 6 月