Ho un programma che dovrebbe prendere come input alcune opzioni per specificare le probabilità nel modulo (p1, p2, p3, ...). Quindi l'utilizzo della riga di comando sarebbe letteralmente:Ottenere una sottostringa di `std :: string` tra due iteratori
./myprog -dist (0.20, 0.40, 0.40)
voglio analizzare gli elenchi di questo tipo in C++ e attualmente sto cercando di farlo con iteratori per il tipo std :: string e la funzione split fornito da 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(", "));
Nota sopra la parte <what to put here?>
. Da quando ho bisogno di ignorare l'inizio e la parentesi finali, voglio fare qualcosa di simile
tmp1.substr(++tmp1.begin(), --tmp1.end())
ma non sembra substr
funziona in questo modo, e non riesco a trovare una funzione nella documentazione che lavora per fare questo .
Un'idea che avevo era di fare iteratore aritmetica, se questo è consentito, e utilizzare substr
chiamare
tmp1.substr(++tmp1.begin(), (--tmp1.end()) - (++tmp1.begin()))
ma non ero sicuro se questo è consentito, o se si tratta di un modo ragionevole per fallo. Se questo non è un approccio valido, qual è uno migliore? ...Molte grazie in anticipo.