2012-06-22 7 views
1

Я пытаюсь запустить старый код на C++ в Linux (Redhat). Я использую gcc версии 4.1.2.error: strstream.h: Нет такого файла или каталога

я получил следующее сообщение об ошибке:

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; 

Как это решить?

+1

Возможно '#include ' и 'станд :: ostringstream strDestXML;'. – hmjd

+0

1) 4.1.2 есть ** старый **. Получить новый компилятор. 2) Стандартные заголовки C++ не имеют расширения. – Griwes

+0

@hmjd почему бы не ответить? –

ответ

7

Вы можете #include <strstream> (обратите внимание на отсутствие суффикса «.h»). Но если вы хотите правильно перенести код на современный C++, вам следует подумать об изменении его на #include <sstream> и std::ostringstream strDestXML;, как указано в комментарии.

3

Стандартные заголовки C++ не имеют расширения.

#include <sstream> 

Стандартные классы содержатся в пространстве имен std:

std::ostringstream strDestXML; 

Наконец, strstream является устаревшим; используйте вместо этого stringstream - вот почему я использовал его здесь.


И только записка о GCC версии - 4.1.2 старый, независимо от того, что - использовать что-то более новое.

2

Современное название для этого включает <strstream>. (Хотя он формально не рекомендуется, он по-прежнему требуется.) Определенные классы находятся в пространстве имен std и имеют немного отличную семантику, чем классический iostream, поэтому в любом случае вам может понадобиться немного изменить модификацию. (В зависимости от того, как оно используется, оно может иметь смысл, чтобы изменить <sstream>, заменив [io]strstream с std::[io]stringstream.)

Смежные вопросы