2009-11-20 5 views
1

У меня есть следующий фрагмент кода. Я компиляция с помощью Sun Studio 12 компилятора и попытался подталкивание 1,33 и 1,39boost split compile issue

#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 :: transform_iterator, boost :: algorithm :: split_iterator, boost :: use_default, boost :: use_default>), необходимый в boost :: algorithm :: iter_split, std :: string, boost :: algorithm :: detail :: token_finderF >> (std :: vector &, std :: string &, boost :: algorithm :: detail :: token_finderF>)

Если у кого-то есть мысли по этому поводу, это было бы потрясающе. Потому что я cotemplateing strtok (только шучу)

ответ

2

За исключением отсутствующей полуколонии после return 0, которую я предполагаю, это несвязанная опечатка, ваш код компилируется для меня отлично, используя gcc 4.3.2.

Согласно documentation для boost::split, вы используете эту функцию правильно, поэтому я не думаю, что это ошибка кодирования. Уверены ли вы, что у вас установлена ​​надстройка?

Редактировать: Возможно, Boost не поддерживает ваш конкретный компилятор, поэтому части повышения могут не работать для вас. См. here для списка поддерживаемых компиляторов, а также различные проблемы, которые затрагивают каждый компилятор.

+0

Возможно, вам стоит опубликовать дополнительную версию, если это имеет значение. – schnaader

+0

Ускоренная версия, которую я скомпилировал, была 1.34.1 –

+0

Это должен быть компилятор. И у меня нет способности меняться. Поэтому я предполагаю, что его strtok. – Pradyot

2

Похоже, что реализация STL вашего компилятора предоставляет только вектор ctor с векторным :: итератором, а не классом итератора. Вы можете проверить это, взглянув на файл заголовка вектора.

Вы можете обойти это, используя STLPort, который, по-видимому, can be used with Sun Studio 12.