2
即時嘗試解析文件。但是,ifstream對象仍然失敗。在我的解析頭文件中,我有這樣的:C++ 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.
我知道文件i因爲在我的解析cpp文件中,我將dfa_file.fail()更改爲!dfa_file.is_open(),並且它停止向我提供該錯誤。所以我做錯了什麼?
編輯:我可以通過將文件的完整路徑放在變量文件名中來解決這個問題。所以就像在我的main.cpp文件中我有
std::string filename = "/Users/myname/Documents/DFA/no000.dfa";
stop_program未定義。 –
@ n.m。它實際上被定義爲我忘了在這裏寫下來。抱歉! – astrocat1997
@ astrocat1997:你可以擴展你的例子,以便它可以用來可靠*重現*你觀察到的行爲,'fail()'和'! IS_OPEN()'? – DevSolar