У меня есть программа, которая, как ожидается, возьмет в качестве ввода несколько опций, чтобы указать вероятности в форме (p1, p2, p3,...). Таким образом, использование командной строки будет буквально:
./myprog -dist (0.20, 0.40, 0.40)
Я хочу анализировать списки, подобные этому в С++, и в настоящее время я пытаюсь сделать это с помощью итераторов для типа std::string и функции split, предоставляемой 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()) )
но я не был уверен, разрешено ли это, или если это разумный способ сделать это. Если это недействительный подход, что лучше?... Большое спасибо заранее.