Я пытаюсь разбить строку на символ с помощью boost
Нынешний буст токенизатор будет токенизироваться на основе пространства
typedef boost::tokenizer<boost::char_separator<char> > tokenizer; boost::char_separator<char> sep(""); tokenizer tokens(str, sep);
Я ожидаю, что выход будет J е F, но фактический результат является JEF
Всего 1 ответ
это
""
является строковым литералом без символов, оканчивающихся нулевым терминатором. В то время как
" "
является строковым литералом, который содержит один символ - пробел также заканчивается нулевым терминатором. Если вы хотите разделить str = "jef"
на пробелы, вам нужно написать что-то вроде этого:
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
предполагает, что оно принимает символы , ваша строка ""
содержит символов. Разделение осуществляется путем сравнения символа разделителя с входной строкой. Как вы хотите сделать это сравнение, когда нет символа, чтобы сделать это, то есть ""
?