Pregunta

Tengo una función en C ++ que toma en un std :: istream como la entrada:

class Foo {
    Foo(std::istream &);
}

El uso de TRAGO, he obligado a Ruby, pero variable $ entrada estándar de Ruby es fundamentalmente diferente de cualquier cosa como las clases de flujo en C ++, así que no estoy seguro de cómo sea 1) exponer la clase C ++ a Ruby en una manera que puedo utilizar $ entrada estándar, o 2) convertir $ entrada estándar en algo la clase C ++ puede entender.

Alguien tiene experiencia con iostreams en C ++ unión a Ruby?

Gracias.

¿Fue útil?

Solución

Puede utilizar una instancia de std :: istream que implementa sus operaciones con métodos de rubíes en $ stdin llamadas a través de la interfaz de C (por ejemplo, usando rb_funcall). Usted no puede hacerlo mediante la derivación de una clase de std :: sí istream, porque sus métodos no son virtuales; en lugar que necesita para derivar de std :: stream_buf y una instancia de un istream que utiliza el búfer de la secuencia.

Otros consejos

tal vez se puede usar el estilo C Descriptores archivo en lugar de istream y luego "convertir" a la corriente de C ++,

Creo que se puede utilizar las respuestas de esta pregunta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top