Потоковая передача строк в boost :: fusion :: vector не работает?

Я хотел бы инициализировать fusion :: vector путем потоковой передачи из std :: cin. Кажется, это невозможно, так как документация говорит:

…извлечение последовательности (ей) с помощью строковых элементов std :: string или C-стиля обычно не работает, поскольку потоковое представление последовательности не может быть однозначно разбираемым

Этот вопрос, возможно, задавался раньше, но я хотел бы получить общее представление о том, как может выглядеть «разбираемая строка».

Ее пример:

#include <iostream>
#include <sstream>
#include <boost/fusion/sequence/io.hpp>
#include <boost/fusion/include/io.hpp>
#include <boost/fusion/tuple/tuple.hpp>
#include <boost/assert.hpp>

#include <string>
#include <assert.h>

using namespace boost::fusion;
using std::cout;
using std::endl;
void main()
{
std::istringstream iss("42,aaa,bbb");
vector<int, std::string, std::string> v;
iss >> tuple_open("") >> tuple_close("") >>tuple_delimiter(",");
iss>>v;
assert(get<1>(v) == std::string("aaa,bbb"));
cout << v << endl;
cout << "element 0: " << get<0>(v) << endl;
cout << "element 1: " << get<1>(v) << endl;
cout << "element 2: " << get<2>(v) << endl;
}

выход:

(42 aaa,bbb )
element 0: 42
element 1: aaa,bbb
element 2:

Как мне заставить оператор fusion io «>>» хорошо работать с std :: string?

1

Решение

Задача ещё не решена.

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

Других решений пока нет …

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