basic_ios::init

basic_istreamやbasic_ostreamは、コンストラクタの中でbasic_ios::initを呼んで初期化している。

basic_ios::init - cpprefjp C++日本語リファレンス

新たにカスタム入力ストリームクラスを定義し、そこにinitメンバ関数を追加、そこでbasic_ios::initを呼ぶようにする。
basic_ios.cppで、

こう書く。
これで、バッファポインタが変わるたびに、initで切り替えられるから、毎回custom_istreamオブジェクト作って、コンストラクタにセットというのはなくなる。

123を読み込んだ後、initで切り替わって、456が読み込まれた。
123を読み込んだ後、initで切り替わって、456が読み込まれた。

123を読み込んだ後、initで切り替わって、456が読み込まれた。

Sample/cpp/basic_ios/init/src/basic_ios at master · bg1bgst333/Sample · GitHub