Я удивлен, что никто не предложил решение с помощью std::regex
еще:
#include
#include
#include
#include
void parse_csint( const std::string& str, std::vector& result ) {
typedef std::regex_iterator re_iterator;
typedef re_iterator::value_type re_iterated;
std::regex re("(\\d+)");
re_iterator rit( str.begin(), str.end(), re );
re_iterator rend;
std::transform( rit, rend, std::back_inserter(result),
[]( const re_iterated& it ){ return std::stoi(it[1]); } );
}
Эта функция вставляет все целые числа на обратной стороне входного вектора. Вы можете настроить регулярное выражение для включения отрицательных целых чисел или чисел с плавающей запятой и т. Д.