StringIO変数を生成するPythonコードがいくつかあります。この変数をC++関数に渡すには、stringstreamパラメータを使用してください(C++のstringstreamはPythonのStringIOに最も近いものです)。 swigを使ってこの翻訳を行う簡単な方法はありますか?swypeを使ってPython StringIOをC++の文字列に渡す
swigモジュールには、いくつかのストリングストリームコードが含まれているstd_sstream.iがありますが、swigのマニュアルやWeb検索で使用している例はありません。
少し明確にするために、私は以下のいくつかの非常に単純なコードを取り上げます。 はここに固定されており、私は変更することはできませんれます。test.cppです:
#include <iostream>
#include <sstream>
#include "test.h"
using namespace std;
void StTest(stringstream &ss)
{
cout << ss << endl;
}
はここにも固定されているTEST.Hです:
#include <sstream>
using namespace std;
void StTest(stringstream &ss);
ここに私が編集して呼び出すことができますPythonのコードがありますC++ StTest機能(私たちはこのtest_test.pyと呼ぶことにします):
#!/usr/bin/env python
import StringIO
import test
ss = StringIO.StringIO()
ss.write("Hello")
# Maybe some thing here to convert ss from StringIO to stringstream
test.StTest(ss)
だから私は上記のコメント行ににstringstreamしたStringIOからの変換を行うことができる何かを探しています。これを使用するべきで何であるように私は、私がtest.iで「std_sstream.i」を含めました
/* test.i */
%module test
%{
#include "test.h"
%}
%include "std_sstream.i"
%include "test.h"
:
ここSWIGのためtest.iファイルで私の最初の発掘は、そのものんです想定する。何かをさせるためにこのファイルに何かを追加する必要がありますか?
現在、エラーレポートtest_test.pyを実行する場合は、次のとおりです。
TypeError: in method 'StTest', argument 1 of type 'stringstream &'
を含め、それはPythonのコード私はmaに編集することができますこの仕事は、私はこの提案が私が後にしているものに合うとは思わない。 – user1215017
元の質問にサンプルコードを追加してより明確にしました。 – user1215017