0

我暂时使用 gcc 2.95.2,sstream它没有定义标题,而是定义了 (略有不同,已弃用) strstream。我目前正在解决这个问题

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

然后是:

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

但这真的很烦人。我只是想确保当我切换回更新的 gcc(或其他一些编译器)时,我不必重写这些段落。有什么想法吗?

4

1 回答 1

2

创建mystream.h

#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

然后改用mystream.h标题和mystream类型。

如果你真的想让它看起来像现代的 sstream,你可以手动创建一个新类(借助更新的 std c++ 库源代码或手动创建一个使用 strstream 作为底层工作方式的代理类)。

于 2008-12-10T18:41:19.627 回答