使用SWIG,C ++和Ruby $ stdin与STD :: ISTREAM的兼容性
题
我在C ++中有一个功能,可以将STD :: ISTream作为输入:
class Foo {
Foo(std::istream &);
}
使用swig,我将其绑定到Ruby,但是Ruby的$ stdin变量与C ++中的流类诸如诸如流类别的内容根本不同,所以我不确定如何以我的方式将C ++类公开给Ruby,以我可以使用$ stdin,或2)将$ stdin转换为C ++类所能理解的东西。
任何人都有在C ++中绑定iostreams对Ruby的经验吗?
谢谢。
解决方案
您可以使用std :: istream的实例,该实例通过$ stdin上的$ stdin上的ruby方法(例如,使用rb_funcall)在$ stdin上实现其操作。您不能通过从std :: istream本身得出类来做到这一点,因为它的方法不是虚拟的。取而代之的是,您需要从std :: stream_buf派生,并实例化使用流缓冲区的iStream。
其他提示
也许您可以使用C样式 文件描述符 而不是iStream,然后将其“转换”到C ++流,而是
我认为您可以在此中使用答案 问题
不隶属于 StackOverflow