为什么没有包含iostream头文件?

时间:2011-05-15 21:59:46

标签: c++ io

#include <sstream>
using namespace std;

int main()
{
    cout << "hi"; // error: undeclared cout
}

根据我的阅读,sstream类派生自iostream类,但为什么不自动包含它?

2 个答案:

答案 0 :(得分:11)

基于iostream的类与iostream标头不同。标准标题不必相互包含,也可以按任何顺序包含。如果您想使用<iostream>的内容,则必须#include <iostream>

答案 1 :(得分:1)

std::sstream源自std::istreamstd::ostream。这意味着您不需要包含<istream><ostream>。但是,std::cout在这两个标头中都没有定义。这就是为什么你需要另一个标题<iostream>的原因。