为什么包括<iostream>和<fstream> </fstream> </iostream>

时间:2012-08-20 12:28:57

标签: c++ stream iostream fstream

  

可能重复:
  Why do I need to include both the iostream and fstream headers to open a file

我写了这段代码:

#include <iostream>
int main()
{
   std::ofstream file_out("file.txt");
   file_out.close();

   return 0;
}

std::ofstream<iostream>中定义,但是编译此代码我得到以下错误:

error: variable 'std::ofstream file_out' has initializer but incomplete type

我发现如果我还包含<fstream>,则错误消失且代码编译。如果<fstream>中包含std::ofstream,我为什么要包含<iostream>

4 个答案:

答案 0 :(得分:2)

你有一个错字:你的意思是ofstream,但你的代码是ostream。后者只是一个基类,不能直接实例化。 (并且您需要<fstream>标题,而不是<iostream>。)

答案 1 :(得分:1)

  

std::ofstream<iostream>

中定义

不。它可以声明,但它在fstream中定义。

答案 2 :(得分:0)

因为定义在#include <fstream>。您还应该看看:

Why do I need to include both the iostream and fstream headers to open a file了解详情。

答案 3 :(得分:0)

因此,C ++标准没有说明其他头文件中包含头文件。对于构造和使用std::ofstream - 您应该包含fstream标题。