0

可能重复:
为什么我需要同时包含 iostream 和 fstream 标头才能打开文件

我写了这段代码:

#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>if std::ofstreamis included in <iostream>

4

4 回答 4

2

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

于 2012-08-20T12:42:05.570 回答
1

std::ofstream定义在<iostream>

没有。它可以在那里声明,但它是在fstream.

于 2012-08-20T12:32:41.077 回答
0

因为定义在#include <fstream> . 你还应该看看:

为什么我需要同时包含 iostream 和 fstream 标头才能打开文件以获取更多详细信息。

于 2012-08-20T12:31:36.300 回答
0

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

于 2012-08-20T12:31:58.907 回答