错误:strstream.h:没有这样的文件或目录

时间:2012-06-22 09:02:29

标签: c++ gcc

我正在尝试在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

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

ostrstream strDestXML;

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:7)

你可以#include <strstream>(注意没有&#39; .h&#39;后缀)。 但是,如果要将代码正确地移植到现代C ++中,则应考虑将此更改为#include <sstream>std::ostringstream strDestXML;,如评论中所示。

答案 1 :(得分:3)

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

#include <sstream>

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

std::ostringstream strDestXML;

最后,strstream已被弃用;请改用stringstream - 这就是我在这里使用它的原因。


而且,关于GCC版本的说明 - 4.1.2 ,无论如何 - 使用更新的东西。

答案 2 :(得分:2)

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