如何处理来自旧编译器的sstream与strstream的不一致性

时间:2008-12-10 18:35:56

标签: gcc stringstream deprecated

我暂时使用的是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(或其他一些编译器)时,我不必重写这些段落。有什么想法吗?

1 个答案:

答案 0 :(得分: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作为基础工作方式的代理类)。