2009-11-20 110 views
1

我有以下代碼片段。我使用了Sun Studio 12編譯器編譯,並試圖提升1.33和1.39boost分割編譯問題

#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 :: algorithm :: split_iterator,boost :: use_default,boost :: use_default>,boost :: boost :: algorithm :: iter_split,std :: string,boost :: algorithm :: detail :: token_finderF >>(std :: boost :: use_default,boost :: using :: default :: boost :: use_default> transform_iterator,boost :: algorithm :: split_iterator,boost :: use_default,boost :: use_default> :: vector &,std :: string &,boost :: algorithm :: detail :: token_finderF>)

如果有人有這個想法,那就太棒了。因爲我是cotemplateing strtok(只是在開玩笑)

回答

2

除了在return 0之後缺少的分號,我認爲這是一個無關的拼寫錯誤,你的代碼使用gcc 4.3.2編譯得很好。

根據documentationboost::split,您正在使用該功能,所以我不認爲這是編碼錯誤。你確定你的提升安裝正確嗎?

編輯:可能是因爲Boost不支持你的特定編譯器,所以boost的部分可能不適合你。有關支持的編譯器的列表,請參見here,以及影響每個編譯器的各種問題。

+0

也許你應該發佈增強版本,如果它很重要。 – schnaader 2009-11-20 18:46:56

+0

我編譯的boost版本是1.34.1 – 2009-11-20 18:52:41

+0

它必須是編譯器。而且我沒有能力改變。所以我想它的strtok。 – Pradyot 2009-11-20 19:19:34

2

聽起來好像你的編譯器的STL實現只提供了vector :: iterator的向量ctor而不是任何迭代器類。您可以通過查看矢量頭文件來驗證這一點。

您可能可以通過使用STLPort解決此問題,顯然can be used with Sun Studio 12