首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用boost::algorithm:string:split和std::string时出现g++无效初始化错误

使用boost::algorithm:string:split和std::string时出现g++无效初始化错误
EN

Stack Overflow用户
提问于 2016-03-16 05:07:44
回答 1查看 349关注 0票数 2

我正在将一些C++代码从Windows移植到Linux (并最终移植到OSX)。大量的C++问题都是由于Windows的不合规引起的。我似乎已经克服了这一点,但现在我面临着一个增强问题。

基本上,我想要切分一个字符串,其中感兴趣的子字符串由逗号分隔,并将这些字符串放入字符串向量中。这会在g++中导致错误,但它可以在Visual Studio中很好地编译

这个程序准确地说明了这个问题:

代码语言:javascript
复制
#include <boost/algorithm/string.hpp>
#include <string>
#include <vector>

int main (void) {


  std::vector<std::string> str_vec;
  std::string str_to_split = "this,is,the,string,to,split";

  boost::algorithm::split(str_vec,
                          str_to_split.substr(1, str_to_split.size()-2),
                          boost::algorithm::is_any_of(","),
                          boost::algorithm::token_compress_on);


  return 0;
}

为了编译我这样做:>> g++ -o foo foo.cpp

这是我的终端输出:

代码语言:javascript
复制
foo.cpp: In function 'int main()':
foo.cpp:11:54: error: invalid initialization of non-const reference type 'std::basic_string<char>&' from an rvalue of type'std::basic_string<char>'
   boost::algorithm::split(str_vec,str_to_split.substr(1, str_to_split.size()-2),boost::algorithm::is_an
                                                      ^
In file included from /usr/include/boost/algorithm/string.hpp:23:0,
                 from foo.cpp:1:
/usr/include/boost/algorithm/string/split.hpp:140:35: note:   initializing argument 2 of 'equenceSequenceT& boost::algorithm::split(SequenceSequenceT&, RangeT&, PredicateT, boost::algorithm::token_compress_mode_type) [with SequenceSequenceT = std::vector<std::basic_string<char> >; RangeT = std::basic_string<char>; PredicateT = boost::algorithm::detail::is_any_ofF<char>]'
         inline SequenceSequenceT& split(
                               ^
EN

回答 1

Stack Overflow用户

发布于 2016-03-16 05:11:07

此函数接受std::string&,而不是std::stringconst std::string&。这意味着您必须将.substr的结果存储在一个中间变量中,然后将该变量传递给boost::algorithm::split。不管怎样,它的代码会更清晰。

顺便说一句,我不知道为什么函数是这样设计的。对我来说似乎很奇怪,但这就对了。

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

https://stackoverflow.com/questions/36022177

复制
相关文章

相似问题

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