哪个C++标头包含哪些其他标头?

dan*_*jar 4 c++ stream include static-libraries

我很困惑哪个标准库包括哪一个.我听说iostream包括ostream或类似的东西.不幸的是我找不到概述.这就是我现在问的原因.

我的程序使用以下库:字符串fstream,iostream,sstream,streambuf.因为它们提供了相关的功能,我想知道其中任何一个是否已包含其中一个.在这种情况下,我可以摆脱多余的包括.

是否有概述表明哪个标准库包含哪个?或者 我的程序中的哪些库用户是多余的?

Ker*_* SB 7

对于任何类型的递归包含,C++都不提供任何保证.您有责任始终包含所需的所有标题.同样,它不保证包含任何特定的标准库头.(例如,您的实现可以合法地始终包含所有标准库头!)这就是为什么 - 因为一切都在std命名空间中.

(我相信C库头文件有一个特殊的规定 - 我认为除非明确包含这些头文件,否则你不会在全局命名空间中获取名称.)

有些标题确实有特定要求; 例如,在C++ 11中(但不是之前),需要<iostream>包含<ostream><istream>.但这只是一个具体案例.