首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能从字符串中复制初始化字符串流?

为什么我不能从字符串中复制初始化字符串流?
EN

Stack Overflow用户
提问于 2013-10-15 22:30:54
回答 1查看 2.5K关注 0票数 4

以下代码在GCC、Clang和Visual Studio中失败:

代码语言:javascript
复制
#include <string>
#include <sstream>

int main() {
    std::string s = "hello"; // ok, copy-initialization
    std::stringstream ss1(s); // ok, direct-initialization
    std::stringstream ss2 = s; // error
}

我认为,只有当构造函数是显式的时,才是直接初始化工作而复制初始化不起作用的情况,而在本例中并非如此。到底怎么回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-15 22:35:36

该构造函数标记为显式,因此只能用于直接初始化。第27.8.5节:

代码语言:javascript
复制
explicit basic_stringstream(
ios_base::openmode which = ios_base::out | ios_base::in);

explicit basic_stringstream(
const basic_string<charT,traits,Allocator>& str,
ios_base::openmode which = ios_base::out | ios_base::in);

basic_stringstream(const basic_stringstream& rhs) = delete;

basic_stringstream(basic_stringstream&& rhs);

( basic_stringbufbasic_istringstreambasic_ostringstream也是如此。)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19392209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档