假设我在字符串流中加入了一个方面:
std::stringstream msgStream;
{
bpt::time_facet * afacet = new bpt::time_facet("%Y-%m-%d\t%H:%M:%S\t0.%f");
msgStream.imbue(std::locale(msgStream.getloc(),afacet));
}
// How to access the facet in order to copy it?
如何从msgStream
复制此构面以便在另一个字符串流中添加新副本?
如果afacet
超出范围但msgStream
没有,则有办法检索构面指针。
答案 0 :(得分:1)
你正在招募std::locale
,而不是bpt::time_facet
。
您可以从std::stringstream
msgStream.getloc()
的当前区域设置
使用std::locale
对象,您可以使用其成员facet
访问构面:
std::locale myLocale = msgStream.getloc();
myLocale.facet; //Operate on the facet. Returns std::locale::facet.
如果需要,您可以将其投放到bpt::time_facet
。
有关详细信息,请参阅类引用 - imbue,facet,stringstream,locale