簡體   English   中英

c ++ ifstream文件已打開但失敗

[英]c++ ifstream file is open but fails

我試圖解析一個文件。 但是,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;
  }
}

在我的main.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(),並且它停止給我該錯誤。 那我在做什么錯?

編輯:我能夠通過將文件的完整路徑放在變量文件名中來解決此問題。 所以就像在我的main.cpp文件中

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

在構造函數中初始化stop_program

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM