【问题标题】:How should I tokenize a string into char using boost我应该如何使用 boost 将字符串标记为 char
【发布时间】:2019-10-05 03:31:51
【问题描述】:

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

目前的boost分词器将基于空间分词

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

我希望输出是 j e F 但实际输出是 杰夫

【问题讨论】:

    标签: c++ string boost tokenize boost-tokenizer


    【解决方案1】:

    这个

    ""
    

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

    " "
    

    是包含一个字符的字符串文字 - 空格 也以空终止符结尾。 如果你想用空格分割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 所暗示的那样,它需要字符,您的字符串"" 不包含任何字符。通过将分隔符与输入字符串进行比较来实现拆分。当没有字符可以进行比较时,您想如何进行此比较,即""

    【讨论】:

    • 我的输入是“jef”而不是“j e f”,我的输入没有空格
    • 我的回答有什么不清楚的地方? "" 因为分隔符没有字符,所以你的输入不能被分割。没有字符可以分裂。如果你想得到jef,你可以遍历“jef”并得到每个字符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2014-09-07
    • 2012-10-13
    • 1970-01-01
    • 2012-03-19
    相关资源
    最近更新 更多