c++ - 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"
解决方案
看起来您对 ifstream 和 ofstream 感到困惑。正如评论中所述,std::ifstream 没有定义运算符 <<。
您正在寻找的输出文件是 std::ofstream。记住 o 代表输出,i 代表输入
推荐阅读
- r - R 在 gloabl 环境中定义的函数在后续函数中不可见
- java - 我需要一些帮助来诊断此代码的问题
- python - 不单独使用 python 包安装共享库
- android - xamarin -keystore 和 apk 有 sha1 不同
- ios - iOS14 CNContactViewController 不显示删除按钮问题
- vue.js - 每次安装组件时都会加载导入?
- ansible - 如何在 Ansible 中引用嵌套键?
- angular - 无法将服务注入 Angular 入口组件(模态)
- java - 服务器和客户端 Android
- django - 在 Django 中输入后更新模型字段