我有以下代码:
#include <boost/algorithm/string/classification.hpp>
#include <boost/algorithm/string/trim.hpp>
#include <boost/assign/list_of.hpp>
#include <string>
#include <vector>
int main()
{
std::vector<char> some_vec = boost::assign::list_of('1')('2')('3')('4')('5')('\0')('\0');
std::string str(some_vec.begin(), some_vec.end());
boost::trim_right_if(str, boost::is_any_of("\0"));
}
我认为在str中应该是“12345”,但是有“12345 \ 0 \ 0”。为什么以及如何解决它?
答案 0 :(得分:2)
此代码有效
boost::trim_right_if(str, boost::is_any_of(boost::as_array("\0") );
诀窍是使用boost::as_array
答案 1 :(得分:1)
我不知道这个函数boost :: is_any_of但是它的参数是一个字符串文字,它似乎将“\ 0”视为一组空字符(en empty string literal)。所以算法没有任何修改。
这只是我的假设。