Если я хочу удалить все единицы из строки с помощью boost::erase_all, я могу сделать это:
Теперь моя строка — «abc». Однако, если я хочу удалить все цифры (0–9) из строки, используя boost::erase_all, мне придется вызывать его один раз для каждой цифры, которую я хочу удалить.
Код: Выделить всё
boost::erase_all( "a1b2c3", "1" );
boost::erase_all( "a1b2c3", "2" );
boost::erase_all( "a1b2c3", "3" );
Я подумал, что могу использовать boost::is_any_of, чтобы удалить их все сразу, поскольку это работает с другими алгоритмами повышения строк, такими как boost::split
code>, но is_any_of, похоже, не работает с Erase_all:
Код: Выделить всё
boost::erase_all( "a1b2c3", boost::is_any_of( "123" ) );
// compile error
boost/algorithm/string/erase.hpp:593:13: error: no matching
function for call to ‘first_finder(const
boost::algorithm::detail::is_any_ofF&)’
Возможно, я упустил здесь что-то очевидное или в boost есть другая функция, предназначенная для этого. Я могу сделать это вручную с помощью стандартного C++, но мне просто интересно, как другие могут использовать boost для этого.
Спасибо за любые советы.
Подробнее здесь:
https://stackoverflow.com/questions/105 ... m-a-string