Получение подстроки `std::string` между двумя итераторами

У меня есть программа, которая должна принимать в качестве входных данных несколько параметров для указания вероятности в виде (p1, p2, p3,... ). Таким образом, использование командной строки будет буквально:

./myprog -dist (0.20, 0.40, 0.40)

Я хочу анализировать списки, подобные этому, на C++, и в настоящее время я пытаюсь сделать это с помощью итераторов для типа std::string и функции разделения, предоставляемой Boost.

// Assume stuff up here is OK
std::vector<string> dist_strs; // Will hold the stuff that is split by boost.
std::string tmp1(argv[k+1]);   // Assign the parentheses enclosed list into this std::string.

// Do some error checking here to make sure tmp1 is valid.

boost::split(dist_strs,  <what to put here?>  , boost::is_any_of(", "));

Примечание над частью <what to put here?>. Поскольку мне нужно игнорировать начальные и конечные круглые скобки, я хочу сделать что-то вроде

tmp1.substr( ++tmp1.begin(), --tmp1.end() )

, но не похоже, что substrработает таким образом, и я не могу найти в документации функцию, которая работает для этого.

Одной из моих идей было выполнить арифметику итератора, если это разрешено, и использовать substrдля вызова

tmp1.substr( ++tmp1.begin(), (--tmp1.end()) - (++tmp1.begin()) )

, но я не был уверен, разрешено ли это и является ли это разумным способом сделать это. Если это неправильный подход, то какой из них лучше?...Спасибо заранее.

26
задан ely 4 April 2012 в 03:03
поделиться