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>andに変更することを検討する必要があります。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>。(正式には非推奨ですが、引き続き必要です。)定義するクラスは名前空間stdにあり、従来のiostreamとはセマンティクスがわずかに異なるため、とにかく後で少し変更する必要があります。(使用方法によっては、に変更して<sstream>、に置き換えるの[io]strstreamが理にかなっている場合がありstd::[io]stringstreamます。)

于 2012-06-22T09:11:34.087 に答える