C++ IF流文件已打开,但失败

c++ ifstream file is open but fails

本文关键字:失败 IF 文件 C++      更新时间:2023-10-16

>im 试图解析文件。 但是,ifstream 对象不断失败。 在我的解析头文件中,我有这个:

class ParseDFA {
public:
  bool stop_program = false;
  std::ifstream dfa_file;
  ParseDFA(std::string parse_filename);
};

在我的解析 cpp 文件中,我有这个:

ParseDFA::ParseDFA(std::string parse_filename) {
  dfa_file.open(parse_filename, std::ifstream::in);
  if (dfa_file.fail()) {
    stop_program = true;
  }
}

在我的主文件中.cpp我有这个:

std::string filename = "no000.dfa";
ParseDFA *dfa_file = new ParseDFA(filename);
if (dfa_file->stop_program) {
  std::cout << "Error opening file." << std::endl;
  return 0;
}

我的输出:

Error opening file.

我知道该文件是打开的,因为在我的解析 cpp 文件中,我将 dfa_file.fail() 更改为 !dfa_file.is_open() 并且它不再给我这个错误。 那我做错了什么?

编辑:我能够通过将文件的完整路径放在变量文件名中来解决问题。 所以就像在我的主文件中一样.cpp我有

std::string filename = "/Users/myname/Documents/DFA/no000.dfa";

在构造函数中初始化stop_program