0

我正在尝试使用 boost 将字符串标记为字符

目前的 boost tokenizer 将基于空间进行 tokenize

 typedef boost::tokenizer<boost::char_separator<char> >
    tokenizer;
  boost::char_separator<char> sep("");
  tokenizer tokens(str, sep);

我希望输出是 j e f 但实际输出是 jef

4

1 回答 1

0

这个

""

是字符串文字,没有以空终止符结尾的字符。然而

" "

是包含一个字符的字符串文字 -空格也以空终止符结尾。如果要按str = "j e f"空间分割,则需要编写如下内容:

  typedef boost::tokenizer<boost::char_separator<char> >
        tokenizer;
  boost::char_separator<char> sep(" ");
  std::string str = "j e f";
  tokenizer tokens(str, sep);
  for (auto i : tokens)
    cout << i << endl;
  // output
  j
  e
  f

顾名思义char_separator,它需要字符,您的字符串""不包含字符。通过将分隔符与输入字符串进行比较来实现拆分。当没有字符进行比较时,您想如何进行比较,即""

于 2019-05-17T20:23:21.650 回答