为什么同时包含<iostream>和<fstream>



可能重复:
为什么我需要同时包含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>,错误就会消失,代码就会编译。如果<iostream>中包含std::ofstream,为什么要包含<fstream>

您有一个拼写错误:您的意思是有一个ofstream,但您的代码显示ostream。后者只是一个基类,不能直接实例化。(您需要<fstream>标头,而不是<iostream>。)

<iostream> 中定义了std::ofstream

没有。它可以在那里被声明,但它是在fstream中定义的。

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

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

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

相关内容

  • 没有找到相关文章

最新更新