提升分裂编译问题

时间:2009-11-20 18:29:54

标签: c++ boost

我有以下代码段。我正在使用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(只开玩笑)

2 个答案:

答案 0 :(得分:2)

听起来你的编译器的STL实现只提供了一个使用vector :: iterator而不是任何迭代器类的vector ctor。您可以通过查看矢量头文件来验证这一点。

您可以使用显然为STLPortcan be used with Sun Studio 12解决此问题。

答案 1 :(得分:2)

除了return 0之后缺少的分号,我认为这是一个无关的拼写错误,你的代码编译好我,使用gcc 4.3.2。

根据boost::split的{​​{3}},您正确使用该功能,因此我认为这不是编码错误。你确定你正确安装了升压器吗?

编辑:可能是Boost不支持您的特定编译器,因此部分boost可能不适合您。请参阅documentation以获取受支持编译器的列表,以及影响每个编译器的各种问题。