1

std::cin からストリーミングして fusion::vector を初期化したいと思います。ドキュメントにあるように、これは不可能のようです:

... 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 でうまく動作させるにはどうすればよいですか?

4

0 に答える 0