# 4.7 `cStringIO` -- 高速化された `StringIO`

`cStringIO` モジュールは `StringIO` モジュールと同様の インターフェースを提供しています。 `StringIO.StringIO` オブジェクトを酷使する場合、 このモジュールにある `StringIO()` 関数をかわりに使うと効果的です。

このモジュールは、ビルトイン型のオブジェクトを返すファクトリー関数を提供しているので、 サブクラス化して自分用の物を作ることはできません。 そうした場合には、オリジナルの `StringIO` モジュールを使ってください。

`StringIO` モジュールで実装されているメモリファイルとは異なり、 このモジュールで提供されているものは、プレイン ASCII 文字列にエンコードできない ユニコードを受け付けることができません。

また、引数に文字列を指定して`StringIO()`呼び出すと読み出し専用のオブジェクト が生成されますが、この場合 `cStringIO.StringIO()` では write()メソッドを持たない オブジェクトを生成します。

次にあげるデータオブジェクトも提供されています:

`InputType`
  文字列をパラメーターに渡して `StringIO` を呼んだときに作られるオブジェクトの オブジェクト型。

`OutputType`
  パラメーターを渡さすに `StringIO` を呼んだときに返されるオブジェクトの オブジェクト型。

このモジュールには C API もあります。詳しくはこのモジュールのソースを参照してください。