【问题标题】:why does iostream header file not get included?为什么不包含 iostream 头文件?
【发布时间】:2011-05-15 21:59:46
【问题描述】:
#include <sstream>
using namespace std;

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

根据我的阅读,sstream 类是从 iostream 类派生的,但为什么它没有被自动包含?

【问题讨论】:

  • 您查看过 sstream 头文件是否包含哪些内容?
  • 它不是从标准输出派生的。 std::cout 也是从 iostream 派生的,但不仅如此。
  • 但是当我派生类时,我不必包含基类头文件。我不知道为什么它没有被收录。

标签: c++ io


【解决方案1】:

基于iostream 的类与iostream 标头不同。标准标题不必相互包含,或者可以以任何顺序相互包含。如果你想使用&lt;iostream&gt;的内容,你必须#include &lt;iostream&gt;。

【讨论】:

  • 对不起,我不明白你所说的基于 iostream 的类是什么意思。
  • @user756327:基于std::ostream等的类。
【解决方案2】:

std::sstream 派生自 std::istream 和 std::ostream。这意味着您不需要包含&lt;istream&gt; 或&lt;ostream&gt;。但是,std::cout 在这两个标头中都没有定义。这就是为什么您需要另一个标题&lt;iostream&gt;。

【讨论】:

    猜你喜欢
    • 2011-12-22
    • 2014-11-23
    • 1970-01-01
    • 2014-03-10
    • 2010-11-07
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多