istream和ostream问题 - C ++

时间:2011-03-03 04:00:52

标签: c++ class input stream

我正在使用两个编译器g ++和Dev - C ++。当我在Dev-C ++上编译我的程序时,它编译得很完美。但是当我尝试在g ++上编译它时,它给了我两个错误:

In file included from a2test.cpp:27:
----.h:25: error: 'ostream' has not been declared
----.h:26: error: 'istream' has not been declared

有人能告诉我怎样才能解决这个问题。

由于

3 个答案:

答案 0 :(得分:4)

确保包含fstream。另外,在ostream之前放置“std ::”或在某处放置“using namespace std”。

如果您发布代码会有所帮助,因为现在我只是根据常见错误进行猜测。

我猜你忘了包含fstream,因为不同的编译器可能会使用不同的头文件,而g ++可能会有一个头文件

// iostream
#include <fstream>

虽然Dev-C ++可能有

// iostream
// no include for fstream in this file

因此,您不小心导入了正确的头文件,而不是明确地执行此操作。

对于头文件,我只是在忘记哪一个时使用这个网站。

ostream - C++ Reference

似乎你需要包含ostream以获得ostream。对于istream来说可能是同样的事情。

答案 1 :(得分:2)

我的通灵调试技巧表明问题可能意味着你对g ++和g ++ Dev-CPP的使用是不同版本的gcc。 Dev-CPP中包含的(可能是更早的)版本中的一个标题可能是#include它不需要的标准C ++标头,这将允许不严格的标头正确编译。

确保您确实#include d <iostream><istream><ostream><iosfwd> - 实际包含这些类型的标题你。

Side Note :请不要使用Dev-CPP - 项目已经死了,编辑器犯了很多罪。再加上它不是一个好的编辑器。如何使用Code :: Blocks或Visual Studio(两者都是免费的)?)

答案 2 :(得分:0)

不知道这是否有帮助,但首先,你应该记得省略其他一些编译器(MS-C ++)使用的“.h”,而不是ANSI / G ++。所以它应该只是

#include <iostream>

其次,不要忘记:

using namespace std;

第三,它已经很长时间了,但是如果我没记错的话,在g ++中,th istream和ostream函数都在“std”库中。所以你可以这样做:

using std::istream;
//later
istream::iostate state = ...

或者,你可以像这样直接使用它们:

std::istream::iostate state = ...

希望这会给你一些想法。