Может ли boost :: split использоваться в списке только одного токена?

Я хотел бы перебрать разделенный запятыми список строк и делать вещи с каждой строкой. Есть ли способ установить boost :: split для распознавания как «abc, xyz», так и «abc» в качестве допустимых входных данных? Другими словами, может ли Split вернуть всю входную строку, если предикат ничего не соответствует?

Или я должен вместо этого использовать boost: tokenizer?

0

Решение

Boost 1.54 делает именно то, что вы хотите. Не пробовал новые версии.

Пример:

#include <iostream>
#include <string>
#include <vector>
#include <boost/algorithm/string.hpp>

int main()
{
std::string test1 = "abc,xyz";
std::vector<std::string> result1;
boost::algorithm::split(result1, test1, boost::is_any_of(","));
for (auto const & s : result1)
{
std::cout << s << std::endl;
}

std::string test2 = "abc";
std::vector<std::string> result2;
boost::algorithm::split(result2, test2, boost::is_any_of(","));
for (auto const & s : result2)
{
std::cout << s << std::endl;
}

return 0;
}

Производит:

abc
xyz
abc
1

Другие решения


По вопросам рекламы [email protected]