我想使用Boost库来拆分字符串,但是我在Visual Studio中遇到了编译错误。
我的代码有#include "boost/algorithm/string/split.hpp";
和#include "boost/algorithm/string/classification.hpp";
,我的项目包含目录包含C:\Data\Libraries\Boost_1.56.0
,其本身包含带有Boost头文件的根boost
目录。
然后我有以下内容:
std::string line = "this,is,a,test";
std::vector<std::string> strings;
boost::algorithm::split(strings, line, boost::is_any_of(','));
但是这给了我各种各样的错误,例如:
Error 37 error C2039: 'type' : is not a member of 'boost::mpl::eval_if_c<false,boost::range_const_iterator<char,void>,boost::range_mutable_iterator<char,void>>' C:\Data\Libraries\Boost_1.56.0\boost\range\iterator.hpp 69
任何帮助?
答案 0 :(得分:1)
该消息令人困惑,因为它基本上是模板元编程发脾气,但问题是boost::is_any_of(',')
不能编译,因为','
是一个不能单个字符被视为&#34;范围&#34;。
你打算写:
boost::algorithm::split(strings, line, boost::is_any_of(","));
// ^ ^
答案 1 :(得分:0)
您尝试使用boost::algorithm::split(strings, line, boost::is_any_of(","));
。 Here是使用split
函数的另一个解释。