如书中所述(探索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;
}

那么iostreamostreamistream是头文件吗?

如果不需要ostream(工作需要iostream)为什么在示例中作者将其包括在中?还是为什么ostream头文件仍然存在

注意:在Bruce Eckel的Vol 1书(于2000年出版)中,没有关于ostreamistream的任何内容。只有一个头文件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/

10-13 05:55