在C++中灌输的目的是什么?

cyb*_*ron 14 c++

我今天正在使用一些代码,我看到:

extern std::locale g_classicLocale;
class StringStream : public virtual std::ostringstream
{
 public:
        StringStream() { imbue(g_classicLocale); }
        virtual ~StringStream() {};
};
Run Code Online (Sandbox Code Playgroud)

然后我面对imbue.这个imbue函数在C++中的用途是什么?它有什么作用?使用imbue(非线程安全,内存分配)是否存在任何潜在问题?

Pra*_*ian 19

imbuestd::ostringstreamfrom 继承std::ios_base,它将流的语言环境设置为指定的语言环境.

这会影响流打印(和读取)某些事物的方式; 例如,设置法语区域设置将导致小数点.被替换为,.


Mat*_*lia 7

C++流根据a执行与(数字)类型的转换locale,这是一个总结所需的所有本地化信息的对象(小数分隔符,日期格式......).

流的默认设置是使用当前的全局语言环境,但您可以使用该imbue函数将自定义语言环境设置为流,这是您的代码在此处执行的操作 - 我认为它设置默认的C语言环境以生成当前与语言环境无关的文本(这对于序列化目的很有用).