- fstream[meta header]
- std[meta namespace]
- basic_filebuf[meta class]
- function[meta id-type]
protected:
virtual void imbue(const locale& loc); // (1) C++98
void imbue(const locale& loc) override; // (1) C++17- locale[link /reference/locale/locale.md]
ロケールを設定する。
このメンバ関数はprotectedであり、std::basic_streambufのpublicメンバ関数pubimbue()を通して間接的に呼び出される。
ファイルが先頭以外の位置にあり、かつ現在のロケールのcodecvtファセットのencoding()が状態依存のエンコーディングを示す場合、そのファセットがlocの対応するファセットと同じであること。
この呼び出し以降に挿入・抽出される文字が、次にimbueが呼び出されるまでlocに従って変換されるようにする。
なし
この関数は、それまでに変換した文字の再変換を必要とする場合がある。またそのために、処理系がファイルの元の内容を復元できることを必要とする場合がある。
#include <iostream>
#include <fstream>
#include <locale>
// basic_filebufを継承して、protectedなimbueの呼び出しを観測する
struct my_filebuf : std::filebuf {
protected:
void imbue(const std::locale& loc) override
{
std::cout << "imbue" << std::endl;
std::filebuf::imbue(loc);
}
};
int main()
{
my_filebuf buf;
buf.open("test.txt", std::ios_base::out);
// pubimbue()を通してimbue()が呼ばれる
buf.pubimbue(std::locale::classic());
}- std::filebuf[link /reference/fstream/basic_filebuf.md]
- imbue[color ff0000]
- buf.open[link open.md]
- buf.pubimbue[link /reference/streambuf/basic_streambuf/pubimbue.md]
- std::locale[link /reference/locale/locale.md]
- std::locale::classic()[link /reference/locale/locale/classic.md]
imbue
- C++98