如果我想使用 删除字符串中的所有字符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
,但 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<char>&)’
也许我在这里忽略了一些明显的东西,或者 boost 中还有另一个功能可以做到这一点。我可以使用标准 C++ 手动完成,但只是好奇其他人如何使用 boost 来做到这一点。
感谢您的任何建议。