Как я должен токенизировать строку в char, используя boost - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь разбить строку на символы, используя boost

Текущий токенайзер буста будет токенизироваться на основе пробела

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

Я ожидаю, что результат будет J е е но фактический результат Джеф

1 Ответ

0 голосов
/ 17 мая 2019

Это

""

является строковым литералом без символов, оканчивающихся нулевым терминатором.Принимая во внимание, что

" "

является строковым литералом, который содержит один символ - пробел , также заканчивающийся нулевым терминатором.Если вы хотите разделить 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 предполагает, что для него требуется символов , ваша строка "" содержитбез символов.Разделение осуществляется путем сравнения символа разделителя с входной строкой.Как вы хотите сделать это сравнение, когда нет персонажа, чтобы сделать это, то есть ""?

...