У меня есть программа, которая должна принимать в качестве входных данных несколько параметров для указания вероятности в виде (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()) )
, но я не был уверен, разрешено ли это и является ли это разумным способом сделать это. Если это неправильный подход, то какой из них лучше?...Спасибо заранее.