首页 > 解决方案 > C++ ifstream 的类型不完整

问题描述

我正在修改一个项目,我想将输出写入文件。在我的.hpp文件中,我声明了一个文件流,如下所示:

// fname.hpp file
#include <fstream>

std::ifstream m_ifs = ("path_to_file");

然后在我的.cpp档案上

// fname.cpp
if (!m_ifs.is_open()) {
      std::cerr << "Not writing to file" << std::endl;
      return;
}
m_ifs << "Write something"

但是当我编译时出现以下错误:

error: field ‘m_ifs’ has incomplete type ‘std::ifstream {aka std::basic_ifstream<char>}’

/usr/include/c++/5/iosfwd:116:11: note: declaration of ‘std::ifstream {aka class std::basic_ifstream<char>}’
     class basic_ifstream;

错误指向我在hpp文件上的声明。

我在网上找到的解决方案并没有解决问题。


以下工作:

// fname.hpp file
#include <fstream>

const std::string m_file = ("path_to_file");
std::fstream m_fs;

// fname.cpp
m_fs.open(m_file.c_str());
if (!m_fs.is_open()) {
      std::cerr << "Not writing to file" << std::endl;
      return;
}
m_fs << "Write something"

标签: c++fstream

解决方案


看起来您对 ifstream 和 ofstream 感到困惑。正如评论中所述,std::ifstream 没有定义运算符 <<。

您正在寻找的输出文件是 std::ofstream。记住 o 代表输出,i 代表输入


推荐阅读