使用std :: fstream但编译器抛出错误

时间:2017-08-04 05:44:45

标签: c++ io

我已经

   using std::fstream;

并尝试创建 ofstream 类的对象,它说

  

错误:'ofstream'未在此范围内声明

但是当使用std :: ofstream 专门时,它可以正常工作。我的问题是为什么使用 std :: fstream 是不够的,因为 ofstream / ifstream 是这个库的类?

亲爱的尊敬的downvoters,请在downvoting之前提供一个理由,以便我可以改进。谢谢!

1 个答案:

答案 0 :(得分:3)

您正在混合使用#includeusing#include在源文件中包含(令人惊讶的不是?)声明,使它们可用。 #include <fstream>实际上声明了std::fstreamstd::ofstream

另一方面,

using从当前名称空间中的其他名称空间导入声明,以允许使用不合格的名称。这里std::ofstream是限定名称(包括命名空间),不合格的名称是...... ofstream

因此,如果您想使用非限定名称ofstream,请在代码中添加using std::ofstream;

但要注意,名称空间被添加到C ++中以允许正确分离声明并避免名称冲突。在主命名空间中过度使用using指令(对using namespace std;不赞成)导致命名空间污染并且会导致冲突......

或者,您可以省略using指令并在代码中始终使用std::ofstream