Boost::erase_all для удаления нескольких символов из строкиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Boost::erase_all для удаления нескольких символов из строки

Сообщение Anonymous »

Если я хочу удалить все единицы из строки с помощью boost::erase_all, я могу сделать это:

Код: Выделить всё

boost::erase_all( "a1b1c1", "1" );
Теперь моя строка — «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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»