swap函数cannot bind non-const lvalue reference of type ‘std::basic_string<char>&‘ to an rvalue of type

cannot bind non-const lvalue reference of type ‘std::basic_string&’ to an rvalue of type
错误发生于swap函数。
我的编译工具是gcc,win10 环境 可能你的其他编译工具能够通过
翻译错误: 无法将函数参数中的std::basic_string& 绑定到这个s,str()

void stream_read_streambuf_stringstream(std::istream& f, std::string& result) 
{ 
    std::stringstream s;
    std::copy(std::istreambuf_iterator<char>(f.rdbuf()),
    std::istreambuf_iterator<char>(),
    std::ostreambuf_iterator<char>(s);
    //const string &str3=s.str();//延长stringstream 对象返回的字符串的生命周期
    //std::swap(result,const_cast<string&>(str3));//去掉const
    std::swap(result,s.str());
}

修改后的代码:

void stream_read_streambuf_stringstream(std::istream& f, std::string& result) 
{ 
    std::stringstream s;
    std::copy(std::istreambuf_iterator<char>(f.rdbuf()),
    std::istreambuf_iterator<char>(),
    std::ostreambuf_iterator<char>(s);
    const string &str3=s.str();//延长stringstream 对象返回的字符串的生命周期
    std::swap(result,const_cast<string&>(str3));//去掉const
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值