“stringstream”是不是复制构造它的字符串?
Posted
技术标签:
【中文标题】“stringstream”是不是复制构造它的字符串?【英文标题】:Does "stringstream" copy the string on which it is constructed?“stringstream”是否复制构造它的字符串? 【发布时间】:2017-08-22 15:34:16 【问题描述】:在这样的一段代码中
std::string s("random;string;");
std::stringstream s_stream(s);
s_stream
是否复制了s
?
我的意思是,如果在创建s_stream
之后,我修改了s
,会发生什么?
【问题讨论】:
en.cppreference.com/w/cpp/io/basic_stringstream/… - "使用 str 的副本作为底层字符串设备的初始内容。" 【参考方案1】:是的。来自http://en.cppreference.com/w/cpp/io/basic_stringstream/basic_stringstream
2) 使用
str
的副本作为底层字符串设备的初始内容。底层basic_stringbuf
对象构造为basic_stringbuf<Char,Traits,Allocator>(str, mode)
。
【讨论】:
有没有不这样做的替代方案? @ingomueller.net,我没有看到。如果有一个接受右值引用的构造函数会很好,并且可以使用std::string
的移动构造函数来避免复制。以上是关于“stringstream”是不是复制构造它的字符串?的主要内容,如果未能解决你的问题,请参考以下文章
stringstream,ostringstream,stringstream
从字符串 stringstream 获取 const ptr 时的行为