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