Pregunta

Estoy temporalmente usando gcc 2.95.2, y en lugar de tener una cabecera sstream, se define una (ligeramente diferente, y desuso) strstream. Actualmente estoy recibiendo alrededor de este con

#if __GNUC__ < 3       // or whatever version number it changes
#include <strstream>
#else
#include <sstream>
#endif

y luego cosas como:

#if __GNUC__ < 3
    strstream str;
    str << "Hello World";
#else
    stringstream str("Hello World");
#endif

pero se está haciendo realmente molesto. Sólo quiero para asegurarse de que al cambiar de nuevo a un gcc más reciente (o algún otro compilador), no tengo que volver a escribir estos pasajes. ¿Alguna idea?

¿Fue útil?

Solución

Crea mystream.h como

#ifndef mystream

#if __GNUC__ < 3       // or whatever version number it changes
#include <strstream>
#define mystream(x,y) strstream x; x << y;
#else
#include <sstream>
#define mystream(x,y) sstream x(y);
#endif

#endif

A continuación, utilice mystream cabecera y <=> escriba en su lugar.

Si usted realmente quiere que se vea como sstream moderna, puede crear una nueva clase de forma manual (con la ayuda del nuevo código fuente de la biblioteca std C ++ o crear manualmente una clase de proxy que utiliza strstream como la forma subyacente a trabajar).

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