我有以下代码段。我正在使用sun studio 12编译器进行编译,并尝试了boost 1.33和1.39
#include <boost/algorithm/string.hpp>
#include <string>
#include <vector>
using namespace boost;
using namespace std;
int main(int argc, char* argv[])
{
string exbyte = "0x2430";
string exbytes = "0x2430,2430";
typedef vector< string > SplitVec;
SplitVec res1 ;
split(res1 , exbyte, is_any_of(",") );
return 0
}
我收到以下编译错误: “/bb/source/boost/boost_1_39_0/boost/algorithm/string/iter_find.hpp”,第175行:错误,nomatchoverin:无法找到std :: vector :: vector的匹配项(boost :: transform_iterator,boost :: boost :: algorithm :: iter_split中需要的algorithm :: split_iterator,boost :: use_default,boost :: use_default&gt;,boost :: transform_iterator,boost :: algorithm :: split_iterator,boost :: use_default,boost :: use_default&gt;), std :: string,boost :: algorithm :: detail :: token_finderF&gt;&gt;(std :: vector&amp;,std :: string&amp;,boost :: algorithm :: detail :: token_finderF&gt;)
如果有人对此有这种想法会很棒。因为我是stoteok(只开玩笑)
答案 0 :(得分:2)
除了return 0
之后缺少的分号,我认为这是一个无关的拼写错误,你的代码编译好我,使用gcc 4.3.2。
根据boost::split
的{{3}},您正确使用该功能,因此我认为这不是编码错误。你确定你正确安装了升压器吗?
编辑:可能是Boost不支持您的特定编译器,因此部分boost可能不适合您。请参阅documentation以获取受支持编译器的列表,以及影响每个编译器的各种问题。
答案 1 :(得分:2)
听起来你的编译器的STL实现只提供了一个使用vector :: iterator而不是任何迭代器类的vector ctor。您可以通过查看矢量头文件来验证这一点。
您可以使用显然为STLPort的can be used with Sun Studio 12解决此问题。