如书中所述(探索C++:程序员对C++的介绍):
我可以完美地运行代码,而无需添加#include <ostream>
:
#include <iostream>
using namespace std;
int main()
{
cout << "hello world"<< endl;
return 0;
}
但是,在本书的示例中,例如:
#include <iostream>
#include <ostream> //why?
using namespace std;
int main()
{
cout << "hello world"<< endl;
return 0;
}
那么
iostream
,ostream
和istream
是头文件吗?如果不需要
ostream
(工作需要iostream
)为什么在示例中作者将其包括在中?还是为什么ostream
头文件仍然存在?注意:在Bruce Eckel的Vol 1书(于2000年出版)中,没有关于
ostream
或istream
的任何内容。只有一个头文件iostream
。 最佳答案
正如ildjarn在评论中指出的那样,2003年的C++标准说iostream不必包括istream和ostream。因此,从理论上讲,这本书是正确的。
但是,大多数主要的编译器供应商都在iostream中添加了istream和ostream,因此您的代码可在您使用的编译器上运行。您可能对其他一些编译器没有这种运气。
如果要编写可移植的代码,以在仅遵循2003标准(或更早版本)的较旧编译器上进行编译,则应同时包含两个 header 。 OTOH,如果您是唯一可以编译代码的人,并且可以控制将使用哪些编译器,那么仅使用iostream是安全的,因为它是前向兼容的。
关于c++ - iostream vs ostream有什么不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9266990/