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