http://www.cplusplus.com/reference/ios/ios/imbue/より
std::ios::imbue <ios>
locale imbue ( const locale& loc );
インビュー ロケール
ロケールに依存する操作で使用される新しいロケール オブジェクトとして、ストリームとそれに関連付けられたストリーム バッファー (存在する場合) の両方に loc を関連付けます。
最初のパラメーターとして imbue_event を指定して register_callback に登録されたすべてのコールバック関数が呼び出されます。
実際、このメンバー関数は、継承された同名の ios_base::imbue(loc) を呼び出し、ストリームがストリーム バッファーに関連付けられている場合は、rdbuf()->pubimbue(loc) も呼び出します。
また、http://stdcxx.apache.org/doc/stdlibug/27-4.htmlも参照してください。
27.4.4 ロケールと Iostream のコラボレーション
基本クラス ios_base にはロケール オブジェクトが含まれています。派生ストリーム クラスによって定義されたフォーマットおよび解析関数は、そのロケールの数値ファセットを使用します。
クラス テンプレート basic_ios は、ストリーム バッファーへのポインターを保持します。このストリーム バッファにもロケール オブジェクトがあり、通常はストリーム クラスの関数で使用される同じロケール オブジェクトのコピーです。ストリーム バッファの入力関数と出力関数は、アタッチされたロケールのコード変換ファセットを使用します。
あなたの場合、「C」数値ロケールと「chs」文字ロケールを使用します。