0
我在使用fstream訪問文件時遇到問題。 下面是代碼
fstream.open()set failbit
Conf::Conf()
{
log = Log::Instance();
_db_user = "";
_db_password = "";
_db_tableName = "";
_treat["db:user"] = &Conf::set_db_user;
_treat["db:adress"] = &Conf::set_db_adress;
_treat["db:password"] = &Conf::set_db_password;
_treat["db:tableName"] = &Conf::set_db_tableName;
_treat["broadcast:adress"] = &Conf::set_broadcast_adress;
_file.open("/home/borne/BorneApp/borne.conf", std::fstream::in);
if (!_file.is_open())
log->logThis("Error while opening borne.conf", "[INIT]", Log::ERROR);
}
void Conf::extract()
{
std::string tmp = "";
while (std::getline(_file, tmp))
{
if (_treat.find(tmp.substr(0, tmp.find("="))) != _treat.end())
callMember(this, _treat[tmp.substr(0, tmp.find("="))])(tmp);
else
log->logThis("Parse Error in your configuration file", "[CONF]", Log::WARNING);
}
}
函數getline返回我什麼
,所以我必須檢查,如果我有一些錯誤,並... _file.fail()設置爲TRUE
事實:文件已正確打開。
我從推出的/ home /節目傳播/ BorneApp/
當我改變這個
_file.open("/home/borne/BorneApp/borne.conf", std::fstream::in);
這樣:
_file.open("./borne.conf", std::fstream::in);
,一切工作正常。
我不uderstan爲什麼我有那個失敗位,你能幫我嗎?
如果從命令行使用'cat/home/borne/BorneApp/borne.conf'打印文件,會發生什麼? – pcarter
我已經打印了文件內容(它存在,這是一條好路徑) –
我擔心這個問題出現在你隱藏的代碼中。你能否給我們一個最小但完整的例子來重現這個問題? – AProgrammer