我正在为一个原生c++项目使用cppyy,我有一个接受std::ostream&
对象的函数,我不知道如何创建从python调用它的东西。
我试过
import io
output = io.StringIO()
CPP_FUNCTION(output)
print(output.getvalue())
但我得到了
TypeError: void CPP_FUNCTION(std::ostream& outputstream) =>
TypeError: could not convert argument 1
1条答案
按热度按时间vwoqyblh1#
正是豪尔赫在评论中所说的:对于一个接受
ostream
的C函数,你必须提供一个实现C的ostream
的对象。Python的io.StringIO()
与std::ostream
没有关系。事实上,两者甚至没有使用相同的底层数据类型作为缓冲区,所以不可能在另一个接口之上构建一个接口。你能做的就是用C的方式捕获东西,然后提取字符串并进行转换,这是以额外的拷贝为代价的(当然,除非所需的结果实际上是要传递给另一个C函数的
std::string
,在这种情况下不需要转换)。示例代码: