我在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 ++流,而是

我认为您可以在此中使用答案 问题

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top