boost :: trim_right_if和null字符

时间:2013-12-19 15:07:36

标签: c++ boost

我有以下代码:

#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”。为什么以及如何解决它?

2 个答案:

答案 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)。所以算法没有任何修改。

这只是我的假设。