¿Cómo lidiar con sstream vs inconsistencia strstream de viejos compiladores
-
21-08-2019 - |
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?
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).