2

如何在地图中后初始化字符串流?

甚至有可能还是我必须创建一个字符串流*?

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;
4

2 回答 2

4

如何在地图中后初始化字符串流?

你不能。STL 容器要求它们的数据元素是可复制的,而流是不可复制的。

为什么要在地图中有流?你不能存储字符串吗?

如果你真的很绝望,你将不得不存储指向(很可能是动态分配的)字符串流的指针:

std::map<std::string, std::shared_ptr<std::stringstream> > stream_map;

这样做的好处是,如果您存储指向流基类的指针,您以后还可以将其他流添加到地图中。

于 2010-07-11T15:24:37.213 回答
0

不确定它是否是您的意思,但如何:

std::stringstream ss;
ss << "blablablabla";
ss.str("") /*Initialize*/
于 2012-08-17T20:02:54.630 回答