Mam program, który ma wziąć jako dane wejściowe kilka opcji do określenia prawdopodobieństwa w formularzu (p1, p2, p3, ...). Więc korzystanie z linii poleceń by dosłownie:Uzyskiwanie podciągu `std :: string` między dwoma iteratorami
./myprog -dist (0.20, 0.40, 0.40)
chcę analizować list jak to w C++ i jestem obecnie próbuje zrobić z iteratorów dla typu std :: string oraz funkcję podziału dostarczonych przez impuls.
// 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(", "));
Uwaga powyżej części <what to put here?>
. Ponieważ muszę ignorować początkowy i końcowy nawiasów, chcę zrobić coś podobnego
tmp1.substr(++tmp1.begin(), --tmp1.end())
ale to nie wygląda substr
działa w ten sposób, a ja nie mogę znaleźć funkcji w dokumentacji, która działa w tym celu .
Jeden pomysł miałam zrobić iterator arytmetyki, jeśli jest to dozwolone i używać substr
zadzwonić
tmp1.substr(++tmp1.begin(), (--tmp1.end()) - (++tmp1.begin()))
ale nie byłem pewien, czy to jest dozwolone, lub jeśli jest to rozsądny sposób Zrób to. Jeśli to nie jest prawidłowe podejście, co jest lepsze? ...Z góry bardzo dziękuję.