1

我正在尝试在 Linux (Redhat) 中运行旧的 C++ 代码。我正在使用 gcc 版本 4.1.2。

我收到以下错误:

error: strstream.h: No such file or directory
/trnuser1/rmtrain/DevelopmentEnv/Generic/CoreObjects/GCVTransformationServices.cpp:41: error: âostrstreamâ was not declared in this scope
/trnuser1/rmtrain/DevelopmentEnv/Generic/CoreObjects/GCVTransformationServices.cpp:41: error: expected `;' before âstrDestXMLâ
/trnuser1/rmtrain/DevelopmentEnv/Generic/CoreObjects/GCVTransformationServices.cpp:62: error: âstrDestXMLâ was not declared in this scope

此代码在 gcc 版本 2.95 的 Solaris 下运行良好。错误指向的行包含以下语句:

ostrstream strDestXML;

我该如何解决这个问题?

4

3 回答 3

7

您可以#include <strstream>(注意没有“.h”后缀)。但是,如果您想将代码正确地移植到现代 C++,您应该考虑将其更改为注释#include <sstream>std::ostringstream strDestXML;的建议。

于 2012-06-22T09:08:51.893 回答
3

标准 C++ 头文件没有扩展名。

#include <sstream>

标准类包含在std命名空间中:

std::ostringstream strDestXML;

最后,strstream不推荐使用;改用stringstream- 这就是我在这里使用它的原因。


而且,只是关于 GCC 版本的注释 - 4.1.2 是旧的,无论如何 - 使用更新的东西。

于 2012-06-22T09:09:39.630 回答
2

此包含的现代名称是<strstream>. (虽然它已正式弃用,但它仍然是必需的。)它定义的类位于 namespace 中std,并且与经典 iostream 的语义略有不同,因此您可能需要稍后进行一些修改。<sstream>(根据使用方式,更改为,替换[io]strstream为可能有意义std::[io]stringstream。)

于 2012-06-22T09:11:34.087 回答