将字符串流式传输到boost :: fusion :: vector不起作用?

时间:2013-04-14 17:33:58

标签: c++ boost tuples boost-fusion boost-tuples

我想通过从std :: cin流式传输初始化fusion :: vector。似乎这是不可能的,因为documentation说:

...使用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运算符“&gt;&gt;”与std :: string一起很好地工作?

0 个答案:

没有答案