我今天正在使用一些代码,我看到:
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
imbue
由std::ostringstream
from 继承std::ios_base
,它将流的语言环境设置为指定的语言环境.
这会影响流打印(和读取)某些事物的方式; 例如,设置法语区域设置将导致小数点.
被替换为,
.
C++流根据a执行与(数字)类型的转换locale
,这是一个总结所需的所有本地化信息的对象(小数分隔符,日期格式......).
流的默认设置是使用当前的全局语言环境,但您可以使用该imbue
函数将自定义语言环境设置为流,这是您的代码在此处执行的操作 - 我认为它设置默认的C语言环境以生成当前与语言环境无关的文本(这对于序列化目的很有用).