读书人

std:ifstream在debug正常为什么在

发布时间: 2013-03-04 17:22:12 作者: rapoo

std::ifstream,在debug正常,为什么在release下出错

bool UserManage::LoadUsrData()                                 //读取文件
{
fs::path p(m_path /"User"/"UserData.bin");
if(!fs::exists(p))
{
return false;
}
else
{
try
{
std::locale::global(std::locale(""));
std::ifstream ifs(p.string().c_str(), std::ios::binary); //这里release时ifs是错误的???
if(ifs.good())
{
boost::archive::binary_iarchive ia(ifs);
ia >>m_Clientuser;
return true;
}
}
catch (std::bad_alloc& ex) {// 资源分配不足
std::cerr << ex.what() << '\n';
//AfxMessageBox(TEXT("资源分配不足"));
exit(1);
} catch (boost::archive::archive_exception& ex) {// 文件数据损坏,不能进行序列化
std::cerr << ex.what() << '\n';
//AfxMessageBox(TEXT("文件数据损坏"));
exit(2);
}
}
}



std::ifstream ifs(p.string().c_str(), std::ios::binary);在debug下调试一点问题都没有,可是到release下就出错了!

函数中的m_path是UserManage类的static属性,获取当前工作路径也没有问题!

fs::path UserManage::m_path = fs::current_path();

有没有那我大神知道问题在哪?还请赐教...
[解决办法]
应该是/"User"/"UserData.bin"文件没找到。
[解决办法]
p是相对路径还是绝对路径
[解决办法]
出错出什么错?
[解决办法]
单步调试和设断点调试是程序员必须掌握的技能之一。

读书人网 >C++

热点推荐