2010-07-11 51 views
2

如何在地图内初始化一个stringstream?后映射初始化stringstream内?

这是甚至可能或我必须创建一个stringstream *?

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; 
+1

你是什么意思后初始化?这段代码片段代表什么?我真的不明白你在问什么。 – SoapBox 2010-07-11 15:11:31

+0

添加了评论以显示我的意思。 – Hendrik 2010-07-11 15:14:49

回答

4

我怎样才能张贴初始化一个地图内的字符串流?

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

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

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

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

这样做,你将存储指针到流基类的好处,你稍后也可以将其他流添加到地图。

+0

对,忘了。 – Klaim 2010-07-11 15:29:31

+0

谢谢,因为我thaugt;( – Hendrik 2010-07-11 15:32:10

0

不知道,如果它的你的意思,但如何:

std::stringstream ss; 
ss << "blablablabla"; 
ss.str("") /*Initialize*/ 
相关问题