如何在地图中初始化字符串流?
是否可能或者我必须创建一个字符串流*?
std::map<std::string, std::stringstream> mapTopics;
if(mapTopics.end() == mapTopics.find(Topic))
{
mapTopics[Topic] = std::stringstream(""); // Post Initialize <---
}
std::map<std::string, std::stringstream>::iterator mapTopicsIter = mapTopics.find(Topic);
mapTopicsIter->second << " <say speaker=\"" << sSpeaker << "\">" << label << "</say>" << std::endl;
答案 0 :(得分:4)
如何在地图中初始化字符串流?
你做不到。 STL容器要求其数据元素是可复制的,并且流不可复制。
为什么要在地图中添加流?你不能存储字符串吗?
如果你真的很绝望,你将不得不存储指向(很可能是动态分配的)字符串流的指针:
std::map<std::string, std::shared_ptr<std::stringstream> > stream_map;
这样做的好处是,如果存储指向流基类的指针,稍后您还可以将其他流添加到地图中。
答案 1 :(得分:0)
不确定如果是你的意思,但如何:
std::stringstream ss;
ss << "blablablabla";
ss.str("") /*Initialize*/